如何引用另一个分支的最后提交

时间:2014-08-06 22:38:08

标签: git

我有两个分支,brA和brB。我在brA中所做的每一项改变都需要将其变为brB。我想要的工作流程完全从命令行运行,并尽可能少地使用键击

  • 提交有关brA的工作。不要记住提交ID,因为我不应该这样做。击键:“git commit -m”= 13 +我的提交消息。
  • 查看brB。击键:我co别名为checkout,只有两个分支,所以“git co -”= 8
  • Cherry选择从brA到brB的最新提交。我cp别名为cherry-pick,但我不知道如何引用另一个分支上的最后一次提交。是的,我可以复制并粘贴提交ID或使用GUI,但我是开发人员,并且没有人有时间!

2 个答案:

答案 0 :(得分:1)

其他分支机构'可以使用@表示法引用提交,如下所示:

git cp brA@{0}

它们从最后一次提交开始向后计数,并且是零索引的。我不知道如何处理与两个父母的提交,但就目前而言,这不是我的问题。这是11个不变的字符," git cp"和" @ {0}。这给了我一个按键总计:

13 + 8 + 11 +提交消息+分支名称

答案 1 :(得分:1)

git中的分支只不过是提交的引用;每个提交都有一个关于其父提交的引用,这就是git构建历史的方式。

当您在分支上进行提交时,该引用指向以前提交为其父提交的新提交。这实际上意味着分支始终指向"最新的"提交。

显然你可能重置一个分支并且"撤消"一些提交方式,但现在引用指向不同的提交,因此其他提交不再是该分支的一部分。

这意味着您只需要使用该引用即可获得最新的"提交一个分支,导致以下命令:

git cherry-pick brA

旁注:一个工作流程,你需要cherry-pick每一个,每个从一个分支到另一个分支的提交似乎有点不合适我可能有更好的方法来实现你的一切想做。

编辑我必须纠正自己:当然git中的分支不是符号引用,而只是常用的引用; git中唯一的符号引用类型可以在HEAD中找到。 HEAD通常指向分支而不是直接指向分支。