Git学习笔记

2014-03-17  付民 

1. Git是分布式版本控制系统,相对的,CVS、SVN都是集中式的版本控制系统;

2. Git安装(Linux)

1) 使用

$ git

查看当前系统是否安装了git;

2) 如果当前系统还没有安装git,在Debian或Unbuntu下,可以使用命令

$ sudo apt-get install git

完成git的安装;

3) 如果是其他Linux版本,先从Git官网下载源码,解压然后依次输入:

$ ./config
$ make
$ sudo make install

4) 安装完成后,进行设置,在命令行输入:

$ git config --global user.name “Your name”
$ git config --global user.email email@example.com

注:使用git config命令的–global参数之后,表示当前机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的username和Email地址;

3. 创建版本库

1) 选择一个合适的地方,创建一个空目录;

$ mkdir directory-name
$ cd directory-name
$ pwd

pwd命令用于查看当前目录;

2) 使用

$ git init

命令把该目录变成Git可以管理的仓库:

4. 使用

$ git status

命令查看当前仓库的状态;

5. 使用$ diff file-name查看当前版本文件和远程仓库版本的区别;

使用

$ git diff HEAD -- file-name

查看工作区和版本库里最新版本的区别;

6. 版本回退

1) 使用

$ git log

查看历史记录;

2) 使用

$ git log --pretty=oneline

查看简单历史记录;

3) 使用

$ git reset --hard HEAD^

回退到最近的上一个版本;

4) 使用

$ cat file-name

查看文件内容;

5) 假定有历史版本,其版本号的前几位为123456,使用

$ git reset --hard 123456

退回到该版本号标识的版本;

6) 使用

$ git reflog

命令查看命令历史列表;

7. 关于Git的版本回退

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当执行版本回退操作时,Git仅仅是把该指针的指向改变而已;

8. 工作区和暂存区

工作区(Working Directory): 当前操作的文件所在的目录就是一个工作区;

版本库(Repository): 工作区有一个隐藏目录”git”,该目录不是工作区,而是Git的版本库,该目录下保存了成为stage(或者成为index)的暂存区,还有Git为该仓库工作而自动创建的第一个分支master,以及指向master的指针HEAD;

9. Git添加文件的步骤

1) 使用

$ git add file-name

把文件修改添加到暂存区;

2) 使用

$ git commit –m ‘comment’

把暂存区的所有内容提交到当前分支;

注: 对于每次修改,如果不把该次修改添加到暂存区,就不会被加入到commit里面;

10. Git跟踪管理的对象是修改,而不是文件;

11. 撤消修改

1) 当错误修改了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令

$ git checkout -- file-name

完成操作;

2) 不仅错误修改了工作区某个文件的内容,而且还将该修改添加到了暂存区,要丢弃该次修改,第一步使用

$ git reset HEAD file-name

回到步骤1),然后按步骤1)进行操作;

3) 如果已经把不合适的修改提交到了版本库时,要撤消本次提交,参考6. 版本退回,不过前提是尚未推送到远程库;

12. 删除文件

1) 直接在文件管理器中删除无用文件,使用命令

$ rm file-name

进行操作;

2) 如果要确实从版本库中删除该文件,使用命令

$ git rm file-name

进行操作;

3) 如果删除错了,可以使用版本库的最新版本进行恢复,使用命令

$ git checkout -- file-name

进行操作;

13. 远程仓库

1) 创建SSH Key,在用户主目录下,如果有.ssh目录,但该目录下没有私钥文件id_rsa和公钥文件id_rsa.pub两个文件,使用shell创建SSH Key:

$ ssh-keygen -t rsa -C "email@example.com"

14. 克隆远程仓库

使用命令

$ git clone git@github.com:jiabailie/Collections.git

进行操作;

注: Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快;

15. 分支管理

1) 创建并切换分支

使用

$ git checkout -b dev

创建dev分支,并把当前分支切换到dev分支;

上面的一条命令相当于

1 $ git branch dev
2 $ git checkout dev

两条命令的效果;

2) 查看当前分支,使用

$ git branch

进行操作;

3) 当前dev分支工作并且提交后,切换回master分支,使用

$ git checkout master

进行分支切换;

4) 合并dev分支到master分支,使用命令

$ git merge dev

进行操作,前提是已经切换回master分支;

5) 分支合并后,删除dev分支,使用命令

$ git branch -d dev

进行操作;

16. 冲突解决

查看分支合并情况,使用命令

$ git log --graph --pretty=oneline --abbrev-commit

进行操作;

17. 分支管理策略

Git默认使用Fast forward模式,在该模式下,删除分支后,会丢弃该分支的信息;

使用–no-ff参数禁用Fast forward方式的merge,禁用后,git会在merge时生成一个新的commit,由此从该分支历史上可以看出分支信息,
使用命令

$ git merge --no-ff -m 'merge with no-ff' dev

完成操作;

18. Bug分支

1) 使用stash功能可以把当前的工作现场保存起来,等以后恢复现场后继续工作,使用

$ git stash

命令完成操作;

2) 使用

$ stash list

命令查看保存的工作现场列表;

3) 有两种办法用来恢复现场:

第一种是使用

$ git stash apply

恢复现场,恢复后stash的内容不会删掉,需要使用

$ git stash drop

命令进行删除操作,使用时先使用

$ git stash list

查看stash列表,然后恢复指定的stash,例如

$ git stash apply stash@{0}

第二种是使用

$ git stash pop

恢复现场,恢复现场的同时也会把stash的内容删除;

19. 强行删除指定分支,使用命令

$ git branch -D branch-name

进行操作;

20. 多人协作

1) 查看远程库信息,使用命令

$ git remote

进行操作;

如果要查看详细,使用命令

$ git remote -v

进行操作;

2) 创建远程origin下dev分支的本地dev分支,使用命令

$ git checkout -b dev origin/dev

进行操作;

3) 设置本地dev分支和远程origin/dev分支的链接,用于git pull操作,使用命令

$ git branch --set-upstream dev origin/dev

进行操作。

转载请注明:程序猿 » Git学习笔记

415°/4155 人阅读/0 条评论 发表评论

登录 后发表评论