第一部分 基本操作
创建分支:
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分支提交。
提交时可能发生的错误及解决办法:
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操作。