我(单独)在一个需要添加几个功能的项目上工作。 我曾经为每个功能创建一个分支。一旦开发了该功能并进行了充分测试,我就将该分支功能与主分支合并。
现在,我在branch-A
上启动了一个未完成的功能(让我们称之为功能A)。
但是,我迫切需要创建一个新功能B并在完成功能A之前将其推送。这就是我创建branch-B
并切换到它的原因。
但是,运行git status
命令,我可以看到我在分支A中所做的所有更改。我不明白这种默认行为。我希望看到"没有变化"因为他们是不同的分支。我绝对需要分支B中的提交忽略我在分支A中进行的所有操作。
我错过了什么?我怎样才能创建合适的工作流程?
答案 0 :(得分:2)
您尚未将更改提交到branch-A
并切换为branch-B
,因此您收到了所有这些混乱。
要避免此行为,请将更改永久提交到branch-A
或暂时提交stash。
答案 1 :(得分:0)
您可能会看到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
。
学会自由使用分支 - 它们重量轻且易于使用。如果你想尝试一些东西,为它创建一个分支。它们可以最大限度地降低丢失更改的风险,并且您仍然拥有完整的历史记录,可以来回合并等等。分支机构非常适合这种工作。
答案 2 :(得分:0)
我认为您在branch B
期间创建了新的branch A
。这将创建以branch B
为基础的branch A
。您必须在branch B
内创建master
。或者只是使用此命令
git checkout -b new-feature master