在Visual Studio中将提交移动到不同的分支?

5

有时我会把工作提交了,但后来意识到将它放在自己的分支上会更好。

事后聪明,如果我往前考虑一下,我本可以新建一个分支,然后在上面进行提交,从而避免这个问题。

是否可以将现有的提交移动到新分支上?如果可以,如何操作?是否可以通过Visual Studio实现?


1
这个回答解决了你的问题吗?如何在Git中在分支之间移动提交? - Liam
2
能否通过Visual Studio实现?我怀疑,因为VS的GIT界面非常差。自己做个好事,学习命令或者获取一个真正有效的GIT用户界面 - Liam
@Liam - 你的链接假设需要使用cherry-pick(我不认为根据问题的措辞需要),而且这个问题问如何在Visual Studio中执行,而那个问题和答案并没有解决这个问题。对于命令行,这个链接更相关:https://dev59.com/IHI-5IYBdhLWcg3w48xO - TTT
1个回答

3
可以在Visual Studio中完成。以下是步骤:
  1. 首先确保您没有任何未决的更改。(将它们存储,提交或撤消)。
  2. 右键单击您签出的分支,然后选择“从新本地分支创建...”
  3. 输入您的新分支名称,但取消选中“检查分支”。
  4. 现在在当前分支上“查看历史记录”。
  5. 在历史视图中,右键单击要重置到的提交。这将是您打算添加到新分支的第一个提交之前的提交。选择“重置 -> 删除更改(--hard)”。
  6. 现在签出您的新分支。

现在,您将处于与第一次创建新分支时完全相同的情况下。

附注:我建议学习如何通过命令行执行此操作,而不是使用GUI。一旦您知道了它,它会更快,更容易,不会将您绑定到任何特定的UI,并使您更轻松地编写脚本。例如,以下是相同的工作流程的命令行示例:

  1. 首先确保您没有任何未决的更改。(将它们存储,提交或撤消)。
  2. git branch new-branch-name # 创建与当前检出相同的新分支
  3. git reset --hard HEAD~1 # 回退一个提交(将1更改为您需要的任意数量)
  4. git checkout new-branch-name

3
这不是“在分支之间移动提交”。你只是在删除提交。这不是OP所问的。他们需要使用cherry-pick - Liam
1
@Liam - 我的回答将提交移动到一个新分支,该分支基于当前分支。OP没有明确指定新分支是否基于当前分支。如果不是,则需要挑选樱桃。但根据第一句话的措辞,“最好在自己的分支中完成”,我认为我的解释很可能是正确的。 - TTT
@Liam - 顺便说一下,如果需要 cherry-pick,在 Visual Studio 中需要多几个步骤,但仍然是可行的。 - TTT
1
@Liam,这刚好在另一个问题中出现,让我想起了去年我们的讨论。我认为我在另一个问题的评论中可能已经澄清了我想说的话,那就是:“无论您的特定场景如何,挑选合适的提交都可以正常工作,因此这是一个很好的默认方法。请注意,如果您的情况是您打算从当前所在的分支创建一个分支,而只是忘记了,那么与cherry-pick相比,您可以通过直接从当前位置创建新分支,然后将当前分支重置回新提交之前来节省一个步骤。” - TTT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接