将提交移动到新分支

时间:2017-12-04 11:24:43

标签: git

我知道它应该很简单,只有我是Git的新手并且对它的术语有点混淆(例如HEAD或Origin ......它们是否相同?)

目前我的分支机构v4000具有以下提交:

---X-Y-Z (v4000 branch head)

我意识到分支v4000 Head应该在提交Y,我需要一个新的分支v4100并将提交Z移动到那个:

---X-Y (v4000 head)
      \
       Z (v4100 head)

您能否在Visual Studio 2017团队资源管理器中帮助我如何实现这一目标?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

分支只是指向某个提交的指针。正如@LethalProgrammer在评论中所说,当前分支的HEAD是它指向的提交。 Origin现在完全不同了,它是远程存储库的默认名称(即服务器上的存储库,您pullpush)。

当你在v4000分支上ZHEAD时(根据我的理解,你的当前状态),你可以创建一个新的分支v4100reset v4000分支返回Y

  • 在命令行中,如下所示:

    git stash存储任何未经修改的更改

    git branch v4100使用v4100创建分支Z,因为它的头部

    git reset --hard Y Y是提交的SHA ID:重置分支v4000的{​​{1}}以提交HEAD

    Y恢复以前隐藏的更改(如果有)

  • 您也可以通过VSTeamExplorer执行此操作,但我不知道如何存储,所以请确保在尝试此操作之前没有任何未经修改的更改:

    选择git stash pop - > Branches,输入New Branch作为分支名称,取消选中v4100,然后点击“创建”。这会创建具有提交Checkout branch的分支4100,因为它是Z

    然后,仍然在HEAD标签中,选择Branches - > Actions。在打开的窗口中,右键单击提交View History并选择Y - > Reset

编辑:一如既往,在使用Delete Changes (--hard)时要小心,因为它可能会导致数据丢失。

这个描述应该足以说服你通过命令行使用git更干净,人们通过本机git命令解释内容更容易。而且,正如@axiac在评论中所建议的那样,阅读Git Book绝对值得花时间。