如何使用 git 分支来实现项目功能?

How to use git branches for project features?

我正在(独自)处理一个需要添加多个功能的项目。 我习惯于为每个功能创建一个分支。功能开发完成并经过良好测试后,我将该分支功能与主分支合并。

现在,我在 branch-A 上开始了一项尚未完成的功能(我们称之为功能 A)。 但是,我迫切需要在完成功能 A 之前创建一个新功能 B 并推送它。这就是我创建 branch-B 并切换到它的原因。

然而,运行 一个 git status 命令,我可以看到我在分支 A 中所做的所有更改。我不明白这种默认行为。我希望看到 "no change" 因为它们是不同的分支。我绝对需要在分支 B 中的提交忽略我在分支 A 中所做的一切。

我错过了什么?我怎样才能创建正确的工作流程?

您还没有将更改提交到 branch-A 并切换到 branch-B,所以您收到了所有这些乱七八糟的东西。

要避免此行为,请永久提交对 branch-A 的更改或临时 stash 更改。

您可能会看到来自 branch-A 的更改,因为您尚未提交它们。在分支之间切换时未删除未跟踪的更改。

执行以下操作:

# Switch back to branch-A
git checkout branch-A

# Check the status
git status

# Add all of the changes
git add .

# Commit the changes
git commit -a

# Switch back to branch-B
git checkout branch-B

# Check git status
git status

如果您想临时提交您的更改(并且您不想使用 git stash),您可以创建一个新分支 branch-A:

# Switch back to branch-A
git checkout branch-A

# Create a new branch
git checkout -b branch-A-temp

# Add all of the changes
git add .

# Commit the changes
git commit -a

# Switch back to branch-B
git checkout branch-B

# Check git status
git status

您可以稍后返回 branch-A-temp 并继续进行更改。完成后,您可以将它们合并到 branch-A.

学习自由地使用分支 - 它们轻巧且易于使用。如果你想尝试一些东西,为它创建一个分支。它们最大限度地降低了丢失更改的风险,并且您仍然拥有完整的历史记录,您可以来回合并等等。分支非常适合此类工作。

我认为您在 branch A 中创建了一个新的 branch B。这将创建以 branch A 作为基础的 branch B。您必须在 master 中创建 branch B。或者简单地使用这个命令

git checkout -b new-feature master