2012-02-26 73 views
2

我正在使用分阶段和未分阶段更改的混合功能分支。高优先级的任务进来,我该怎么做?突发高优先级任务的Git工作流程

看起来git checkout不会触及分阶段和未分阶段的更改。所以,我应该:

git add -A 
git commit -am "must stop working to fix bug!" 
git checkout master 
git checkout -b "bug_branch" 

回答

1

有关git的绝妙之处在于,它能够为您提供多种实现目标的方式,让您可以将git调整为适合您的工作流程,而不是将自己的工作流调整为git。

有多种方法可以做到这一点,如:

藏匿的更改,然后切换到错误的分支,然后应用藏匿时,你与你的bug修复完成。

本地提交更改,切换到错误分支修正错误,然后修正内容本地提交历史与git rebase -i

提交当前更改到一个新的本地分支,切换到错误的分支,修复bug ,然后将您的更改从本地临时分支合并回您的功能分支。

+0

感谢您的多种选择。对于下一个读者来说,这将是很好的例子。 – 2012-02-28 05:02:50

7

可以暂时提交您的工作使用git stash save藏匿,修复错误或做你需要做的任何高优先级的任务,然后用git stash apply应用藏匿回来继续工作。

http://book.git-scm.com/4_stashing.html

+1

的'git的stash'一个特别的优点是,它节省了工作树和索引,并恢复双方,这是如果你关心这个区别的话,这很有用 – 2012-02-26 22:31:31

0

git stash是你的朋友。假设你是你bug_fix分支

git stash save "must stop working to fix bug!" 
git checkout master 
.. do some stuff 
git commit -am 'foo' 
git checkout bug_fix 
git stash pop 

注意,“git的藏匿处弹出”恢复藏匿的变化,这是你想要的最长时间。如果您想要将更改应用于存储并将其保存在存储中,请使用git stash apply。如果你想你的藏匿适用于多个分支这是有用的:

git checkout branch1 
git stash apply 
git checkout branch2 
git stash apply 
git checkout branch3 
git stash apply