廖大神的Git教程

安装:

Centos系统下的安装:

yum  install  git

安装完成,查看安装的版本:

#git  --version
git version 1.8.3.1

创建版本库:
创建一个新的空的目录

/db/git/learngit

使用 git init 将目录变成可Git可以管理的仓库

#git init
Initialized empty Git repository in /db/git//learngit/.git/

使用命令git add 将文件添加到暂存区

#git add readme.txt

使用命令git commit将文件提交到仓库

#git commit -m "wrote a readme file"

使用命令git status查看仓库当前状态

#git status

使用命令git diff查看修改内容

#git diff

使用命令git log查看提交日志,可以加上参数--pretty=oneline仅显式带有commit id的那一行

#git log
#git log --pretty=oneline

在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

使用命令git reset进行版本回退

# git reset --hard HEAD^

我们也可以使用commit id进行版本回退

# git reset --hard 3628164

使用命令 git reflog用来记录每一次的命令,里面有commit id

# git reflog

Git跟踪并管理的是修改,而非文件。

使用命令git checkout -- file可以丢弃工作区的修改

# git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。

当我们使用了git add 将修改后的文件加入到了暂存区后,可以使用命令 git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:

# git reset HEAD readme.txt
Unstaged changes after reset:
M       readme.txt

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

删除文件:
通常直接在文件管理器中把没用的文件删了,或者用rm命令删了:

# rm   test.txt

你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit

# git rm  test.txt
rm 'test.txt'

# git commit -m "remove test.txt"
[master 90af2ab] remove test.txt
 1 file changed, 2 deletions(-)
 delete mode 100644 test.txt

现在,文件就从版本库中被删除了。

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

# git checkout -- test.txt

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”.

远程仓库:
创建SSH Key:

# ssh-keygen -t rsa -C "[email protected]"

将公匙拷到github账号对应的位置处。

在GitHub上创建仓库learngit,我们根据GitHub的提示,在本地的learngit仓库下运行命令:

 git remote add origin [email protected]:michaelliao/learngit.git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

把本地库的所有内容推送到远程库上:

# git push -u origin master

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

从现在开始,只要本地做了提交,就可以通过命令:

# git push origin master

把本地master分支的最新修改推送到GitHub。

从远程克隆:
首先在远程GitHub上新建一个仓库,然后使用git clone进行下载克隆:

#  git clone [email protected]:michaelliao/gitskills.git

从远程库克隆
阅读: 678059
上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills

廖大神的Git教程_第1张图片
github-init-repo

我们勾选Initialize this repository with a README
,这样GitHub会自动为我们创建一个README.md
文件。创建完毕后,可以看到README.md
文件:
廖大神的Git教程_第2张图片
github-init-repo-2

现在,远程库已经准备好了,下一步是用命令git clone
克隆一个本地库:
$ git clone [email protected]:michaelliao/gitskills.gitCloning into 'gitskills'...remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused 0 (delta 0)Receiving objects: 100% (3/3), done.$ cd gitskills$ lsREADME.md

注意把Git库的地址换成你自己的,然后进入gitskills
目录看看,已经有README.md
文件了。

如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
你也许还注意到,GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git
这样的地址。实际上,Git支持多种协议,默认的git://
使用ssh,但也可以使用https
等其他协议。
使用https
除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh
协议而只能用https。

你可能感兴趣的:(廖大神的Git教程)