Git基础入门五:分支管理

作者同系列博客参考链接:

Git基础入门五:分支管理
Git基础入门四:版本回退(撤销修改)
Git基础入门三:创建版本库和添加修改文件基本命令
Git基础入门二:工作区和暂存区
Git基础入门一:起源与安装

 

1、查看分支:git branch

     列出所有分支,当前分支前面会标一个*号。

2、创建分支:git branch <name>

3、切换分支:git checkout <name>

4、创建+切换分支:git checkout -b <name>

     git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

     $ git branch dev

     $ git checkout dev

     Switched to branch 'dev'

5、合并某分支到当前分支:git merge <name>

     合并时,有时候会出现Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,     所以合并速度非常快。

     当然,也不是每次合并都能Fast-forward

6、解决分支合并冲突:执行以上命令时,如果文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件,然后直接VI该文件。

注:Git<<<<<<<=======>>>>>>>标记出不同分支的内容。

需手工修改冲突文件。改完再git addgit commit提交。

如果存在未解决的冲突时,下次进入工作的时候,Git Bash窗口会有提示:

解决完冲突并addcommit之后,就立马恢复正常。

7、git merge的“--no-ff”参数的区别

     git merge –no-ff 强制禁用Fast forward模式,Git会在merge时生成一个新的commit可以保存你之前的分支历史,能够更好的查看 merge历史。

     使用git log --graph --pretty=oneline --abbrev-commit可以以图形的方式查看分支提交记录。比如:

     git merge 则不会显示 feature,只保留单条分支记录。其显示结果和在被合并的分支里显示的结果一样,貌似只是把被合并分支的历史给合并进来。

8、Git储藏:git stash,把当前未commit的修改收存起来,等到需要的时候再拿出来。并且该分支会恢复到未修改前的状态,除非修改的文件未add到暂存区(未被git管理)。

git stash list显示暂存的工作区 (其中0是最近一次stash的内容)

     stash@{0}: WIP on dev2: 4574b05 add merge from dev 3

     stash@{1}: WIP on dev2: 4574b05 add merge from dev 3

     stash@{2}: WIP on dev2: 4574b05 add merge from dev 3

git stash pop(等同于git stash apply恢复 + git stash drop删除)):恢复stash里的内容,并删除stash),但是pop命令也只能pop某一次的stash内容,如果stash了多次,需要pop多次。

     可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令(可以把多次stash的内容都恢复):

$ git stash apply stash@{0}

     问题思考:已add但未commit的文件,在checkout到另外一个工作区时,仍然留在工作区,并且是add的状态。那还用stash干嘛?本地的修改和分支是不绑定的。

9、分支删除:

      a、一般删除:git branch -d 分支名

如果被删除的分支没有被merge过,不允许被删除,否则使用强制删除命令。

      b、强制删除:git branch -D 分支名

10、查看两分支直接的差别

Git diff 分支1 分支2

     git log --oneline B ^A 可以列出B分支有而A分支没有的提交

     git log --oneline A ^B 可以列出A分支有而B分支没有的提交

     用git log --oneline B ^A 列出的提交中如果没有出现你需要的提交,则A分支已经合入了;如果有,就没合入。【这个好像不可以,如果使用的是cherry-pick的话,例如从B上cherry-pick一个patch到A,那么这条命令(git log --oneline B ^A )还是会把这个patch给列出来··
     追答:你要切换到A上面确保B上面cherry-pick过来的提交已经在A这条分支上,而且没有冲突,changedid都是相同的。那用git log --oneline B ^A就不会被比较出来。】
  • git diff 显示工作目录与索引文件之间的差异
  • git diff cached显示索引文件与git仓库之间的差异
  • git diff HEAD 显示工作目录与git仓库之间的差异
  • git diff HEAD^ 则显示上一次提交之前工作目录与git仓库之间的差异,所以我们在git pull后,可以通过git diff HEAD^ 来查看拉下来的文件有那些具体的修改。

11、抓取分支

     如果往远处push分支修改的时候遇到冲突,就需要从远程拉分支最新内容下来:git pull

     如果git pull失败了,有类似“There is no tracking information for the current branch.”提示,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

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

     Branch 'dev' set up to track remote branch 'dev' from 'origin'.

12、多人协作:

     多人协作的工作模式通常是这样:

     a、首先,可以试图用git push origin <branch-name>推送自己的修改;

     b、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

     c、如果合并有冲突,则解决冲突,并在本地提交;

     d、没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

     e、如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令:

git branch --set-upstream-to=origin/<branch-name> <branch-name>

 

作者同系列博客参考链接:

Git基础入门五:分支管理
Git基础入门四:版本回退(撤销修改)
Git基础入门三:创建版本库和添加修改文件基本命令
Git基础入门二:工作区和暂存区
Git基础入门一:起源与安装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值