git分支管理

第一部分  基本操作

创建分支:

git branch 分支名

切换分支:

git checkout 分支名

(新版本) git switch 分支名

创建并切换一步到位:

git checkout -b 分支名

(新版本) git switch -c 分支名

查看所有分支及当前分支:

git branch(当前所在分支前会标记  *  )

将其他分支的提交合并到Master分支上:

git merge 分支名

删除分支:

git branch -d 分支名

第二部分  解决分支冲突

子分支和master之间出现冲突:

冲突示意图

master在test.txt文件中添加了“question&anwser”提交,b1分支在test.txt文件中添加了“question”后提交,将b1分支合并到master分支时遇到冲突如下:

master合并b1分支发生冲突

发生冲突后文本内容变成了下图这样,

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

解决冲突需要我们手动修改冲突后再次在master分支提交。

修改冲突

提交时可能发生的错误及解决办法:

1.全部提交,如下图。git commit -a       2.部分提交。git commit -i -m "conflict fixed"

提交时可能发生的错误及解决办法

查看分支合并图:

git log --graph

第三部分 bug分支

在b1分支上正在开发一个任务,小组里有一个bug急需解决,这时候创建一个bug01分支,改bug。那么在b1上没提交的情况下,切换到bug01分支上去改bug,回来开发的任务还有吗?

保存b1分支的工作现场:

git stash

假如在master分支上修改bug,就在那个分支上开一个临时的分支“灭霸(无聊的谐音梗)”解决bug,解决后将“灭霸”合并到master分支,最后删除“灭霸”。

消灭bug后,回到开始的地方,b1分支上继续开发任务,


恢复现场

查看保存的工作现场:

git stash list

恢复工作现场:

恢复+删除stash内容:  git stash apply stash@{0}+git stash drop

一步到位:git stash pop(自动删除stash内容)

由于b1是从master上分出来的,master上存在bug,自然b1也会存在bug。那对一个分支的修改如何复制到另一个上呢?(类似格式刷的功能)

复制一个特定的提交到当前分支:

git cherry-pick <修改操作id编号>

注意:在b1分支 cherry-pick 的时候,之前做的修改要先commit,不然会发生如下图中的冲突,或者手动解决冲突后再执行add和commit操作。

b1未提交执行cherry-pick发生冲突
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。