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).
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐