软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:
并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
$ git branch
* dev
master
$ git status #修改t1.txt 不要提交,这是dev分支上
On branch dev
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: t1.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git stash #把现场储存起来
Saved working directory and index state WIP on dev: cd2ba01 br
HEAD is now at cd2ba01 br
$ git checkout master #切到主分支上
$ git checkout -b issue-102 #在主分支上创建新的bug 分支来修复bug
$ vi t1.txt #修改文件
$ git add t1.txt
$ git commit -m "fix bug"
$ git checkout master #切换到主线
$ git merge --no-ff -m "merged bug fix 102" issue-102 #合并分支到主线
$ git branch -d issue-102 #放心的删除分支
$git checkout dev
$git status #查看状态
$ git stash list #查看储存了哪些
stash@{0}: WIP on dev: cd2ba01 br
stash@{1}: WIP on dev: cd2ba01 br
$ git stash pop #恢复的同时把stash内容也删了
$ cat t1.txt
删除分支:
$ git branch -d feature-vulcan #普通删除分支
$ git branch -D feature-vulcan #强行删除分支