如何使用Git流创建新功能?

时间:2013-03-17 09:58:44

标签: git

我使用Git Flow(功能A)启动了一项新功能,但尚未提交任何更改。

然后我需要创建一个新功能(功能B),但我不希望它包含我对功能A的未提交更改。

我无法解释为什么新功能没有从Develop分支的当前状态开始!它包括我尚未提交的功能A的所有更改。

3 个答案:

答案 0 :(得分:2)

这是git中的正常行为,与git flow无关:
当您切换(a.k.a checkout)分支并且您的工作目录中有未提交的更改时,有两种可能的情况:

  1. 其他分支的结帐不会覆盖任何未提交的更改:结帐成功,您现在在已签出的分支上,未提交的更改仍在您的工作目录中。
  2. 结帐另一个分支会覆盖其中一些未提交的更改:结帐失败。
  3. git flow feature start <name>完全相同:它创建了一个新分支并将其检出。因为没有冲突,情况1会发生。

    问问自己:
    如果切换分支后未提交的更改不会保留在工作目录中,那么它们应该去哪里?

    正如Thomas正确指出的那样,git stash可以帮到你。或者您可以简单地将更改提交到功能A的分支,因为无论如何您都应该经常提交。

答案 1 :(得分:1)

我不熟悉Git Flow,但也许git stash会对此有所帮助吗?

答案 2 :(得分:1)

如果您当前在分支featureA上有一些未提交的更改,并且您想要创建不包含未提交更改的新分支,请尝试以下操作:

git stash
git checkout -b featureB
//now in branch 'featureB` you will no longer have the uncommitted changes
//in order to continue your work on 'featureA':
git checkout featureA
git stash pop