廖雪峰老师Git教程知识整理(3.2)-分支管理
4.Bug分支在日常的开发中 Bug是不可避免的。既然Git的分支如此优秀我们就可以为每一个bug打一个临时分支进行处理。Bug解决后可以合并删除临时分支。假设现在有一个编号001的Bug,我们便在当前分支打一个临时分支bug001 来处理它 ,但是我们手头的工作还没有做完,预计还要一天,而这个bug解决估计也就两个小时,如果提交当前分支则会影响工作。怎么办?On branch m
4.Bug分支
在日常的开发中 Bug是不可避免的。既然Git的分支如此优秀我们就可以为每一个bug打一个临时分支进行处理。Bug解决后可以合并删除临时分支。
假设现在有一个编号001的Bug,我们便在当前分支打一个临时分支bug001
来处理它 ,但是我们手头的工作还没有做完,预计还要一天,而这个bug解决估计也就两个小时,如果提交当前分支则会影响工作。怎么办?
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: a.txt
Git
为我们提供了stash
功能 ,将工作现场存储起来,等解决完bug
再恢复现场
$ git stash
Saved working directory and index state WIP on master: 3a07802 sixCommit
$ git status
On branch master
nothing to commit, working tree clean
工作区已经是干净的了,接下来我们创建分支
git checkout -b bug001
接下来我们在b.txt
添加一句话(deal bug
)就当做解决bug
了 哈哈
$ git diff
diff --git a/b.txt b/b.txt
index f0d758f..a9929b9 100644
--- a/b.txt
+++ b/b.txt
@@ -1 +1,2 @@
-metoo<A3><A1><A3><A1><A3><A1>
\ No newline at end of file
+metoo<A3><A1><A3><A1><A3><A1>
+deal bug
\ No newline at end of file
添加到工作区并提交
$ git add b.txt
admin@DESKTOP-6HL5242 MINGW64 /c/studygit (bug001)
$ git commit -m "dealBUg"
[bug001 a34f2aa] dealBUg
1 file changed, 2 insertions(+), 1 deletion(-)
admin@DESKTOP-6HL5242 MINGW64 /c/studygit (bug001)
$ git status
On branch bug001
nothing to commit, working tree clean
好了 bug 已经解决完了 切换到master
分支 合并分支并删除临时分支
$ git checkout master
Switched to branch 'master'
$ git merge --no-f -m "dealbug2" bug001
Merge made by the 'recursive' strategy.
b.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
$ git branch -d bug001
Deleted branch bug001 (was a34f2aa).
我们查看当前状态
$ git status
On branch master
nothing to commit, working tree clean
艾?怎么工作区是干净得,噢 别忘了 我们刚才保存了现场,现在恢复就可以啦
我们可以使用git stash list
查看
$ git stash list
stash@{0}: WIP on master: 3a07802 sixCommit
好 接下来恢复现场 可以使用两种命令
git stash apply
但是这个不会删除 stash
现场 ,还要使用 git stash drop
删除
另一种就是git stash pop
会把stash内容也删了
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: a.txt
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (60e6607d6e5771efb406bf81fe4fe23705782611)
ok 回来了,我们可以多次git stash
恢复的时候只要看git stash list
就可以恢复到想要的现场了
另外说一下本篇文章bug分支的问题,我们是直接在master
上面打bug分支,还记得之前说过的吗,我们master
分支一般是稳定的 ,所以实际情况我们应该是在dev
(当然这只是一个例子)保存现场,然后切换到master
分支,在master
创建bug临时分支,解决bug之后再切回master
分支 ,合并删除。再切换到dev
分支,恢复现场
5.Feature分支
现实中的开发总是由多个小功能组成的。而每一个小功能刚开始代码都是不健壮的(至少我是)。所以我们不想在我们开发的dev
分支上开发,因为我们新创建一个feature
分支,然后开发提交。切回当前dev
分支。但是这个时候突然告知我们新功能不要了,我们就无法合并删除feature
分支 。好 我们接下来删除分支
$ git branch -d feature-vulcan
error: The branch 'feature-vulcan' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-vulcan'.
提示信息告诉分支还没有合并我们无法删除,如果想强行删除丢掉修改我们可以使用git branch -D feature-vulcan
进行删除
$ git branch -D feature-vulcan
Deleted branch feature-vulcan (was 756d4af).
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)