13.bug分支

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以每个bug都可以通过一个新的临时分支来修复,修复后合并分支,然后将临时分支删除。当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支 issue-101 来修复它,但是,等等,当前正在 dev 上进行的工作还没有提交:
并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
幸好,Git还提供了一个 stash 功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
1.保存当前工作现场
chillon:~/program/learngit$ git stash
Saved working directory and index state WIP on dev: f3a9c93 Initial learngit
HEAD is now at f3a9c93 Initial learngit

现在,用 git status 查看工作区,就是干净的(除非有没有被Git管理的文件),
chillon:~/program/learngit$ git status .
# On branch dev
nothing to commit (working directory clean)

2.创建新分支修复bug
因此可以放心地创建分支来修复bug。首先确定要在哪个分支上修复bug,假定需要在 master 分支上修复,就从 master 创建临时分支:
chillon:~/program/learngit$ git checkout master
Switched to branch 'master'
chillon:~/program/learngit$
chillon:~/program/learngit$ git checkout -b issue-101
Switched to a new branch 'issue-101'

现在修复bug,然后提交

3.修复完bug,切回master主分支,并合并修复bug的新分支,最后删除新分支
修复完成,切回master分支,并合并,最后删除issue-101分支
chillon:~/program/learngit$ git checkout master
Switched to branch 'master'
chillon:~/program/learngit$ git merge --no-ff -m "merge bug fix issue-101" issue-101
Merge made by the 'recursive' strategy.
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
chillon:~/program/learngit$ git branch -D issue-101
Deleted branch issue-101 (was 57f056d).

4.切回工作现场分支,恢复工作现场,继续开发工作
上述命令中恢复工作现场使用了两个命令:git stash apply和git stash drop
分别是恢复工作现场和删除stash内容
合并为一步为:git stash pop 恢复的同时把stash内容也删了:

猜你喜欢

转载自blog.csdn.net/qq_33575901/article/details/80935326