如何使用Git flow创建新特性?

如何使用Git flow创建新特性?,git,Git,我使用Git Flow(功能a)启动了一个新功能,但尚未提交任何更改 然后我需要创建一个新功能(功能B),但我不希望它包含功能a中未提交的更改 我无法解释为什么新功能不是从开发分支的当前状态开始的!它包括我对功能A所做的所有尚未提交的更改。我不熟悉Git Flow,但在这里可能会有所帮助?我不熟悉Git Flow,但在这里可能会有所帮助?这是Git中的正常行为,与Git Flow无关: 当您切换(也称为签出)分支并且工作目录中有未提交的更改时,有两种可能的情况: 另一个分支的签出不会覆盖任何未提

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

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


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

我不熟悉Git Flow,但在这里可能会有所帮助?

我不熟悉Git Flow,但在这里可能会有所帮助?

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

  • 另一个分支的签出不会覆盖任何未提交的更改:签出成功,您现在位于签出的分支上,未提交的更改仍在您的工作目录中
  • 另一个分支的签出将覆盖一些未提交的更改:签出失败
  • git-flow-featurestart
    正是这样做的:它创建一个新分支并将其签出。因为没有冲突,所以发生了场景1

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


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

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

  • 另一个分支的签出不会覆盖任何未提交的更改:签出成功,您现在位于签出的分支上,未提交的更改仍在您的工作目录中
  • 另一个分支的签出将覆盖一些未提交的更改:签出失败
  • git-flow-featurestart
    正是这样做的:它创建一个新分支并将其签出。因为没有冲突,所以发生了场景1

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


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

    如果您当前在分支
    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
    

    如果您当前在分支
    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
    

    如果
    git stash
    是实现这一点的方法,那么为什么git Flow的checkout命令不能自动实现这一点呢?我描述的这种行为不是更直观吗?@Arman:我不是git flow的作者,所以我不能肯定,但我会发现它违反直觉,因为它不同于git checkout-b的正常行为。有时,我会做一些更改,当我想提交这些更改时,我意识到它们应该进入一个新特性。因此,我启动了新功能并提交了更改。如果git隐藏在这里会自动发生,我会非常困惑,因为我所有的更改都会突然消失。如果
    git隐藏
    是这样做的,那么为什么git Flow的checkout命令不能自动完成呢?我描述的这种行为不是更直观吗?@Arman:我不是git flow的作者,所以我不能肯定,但我会发现它违反直觉,因为它不同于git checkout-b的正常行为。有时,我会做一些更改,当我想提交这些更改时,我意识到它们应该进入一个新特性。因此,我启动了新功能并提交了更改。如果git存储在这里会自动发生,我会非常困惑,因为我所有的更改都会突然消失。