1

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

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

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

4

3 回答 3

2

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

  1. 另一个分支的签出不会覆盖任何未提交的更改:签出成功,您现在位于签出分支上,未提交的更改仍在您的工作目录中。
  2. 另一个分支的检出会覆盖其中一些未提交的更改:检出失败。

git flow feature start <name>正是这样做的:它创建一个新分支并检查它。因为没有冲突场景 1 发生。

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

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

于 2013-03-17T10:11:27.960 回答
1

我不熟悉 Git Flow,但也许git stash会在这里有所帮助?

于 2013-03-17T10:06:02.637 回答
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
于 2013-03-17T10:12:03.197 回答