关于提交的日期(顺序),我怎么能选择?

时间:2014-08-02 08:42:12

标签: git

如果我挑选提交frome远程分支它变成了我当前分支的顶部,所以订单提交是applayed更改,我得到不正确的结果。我怎样才能从远程分支中提取日期(当它应用于远程分支时),因此提交将不在我当前分支的顶部,而是在日期的正确位置。

1 个答案:

答案 0 :(得分:2)

Cherry-picks总是在分支的尖端(并按照命令的顺序)结束。如果您想要其他结果,git cherry-pick不是您应该关注的工具。

根据您的描述,听起来您有以下情况:

  F---G---H---I    origin/master
 /
A---B---C---D---E  master

从origin / master,你想要提交,比如F和H,但不要提到分支的尖端,而是介于两者之间,或许是这样的:

  F---G---H---I              origin/master
 /
A---B---F'---C---H'---D---E  master

有几种方法可以获得这种状态。以下示例从B创建一个新分支,并按所需顺序分配提交,最后使用重写操作重新创建主分支,覆盖原始分支。

$ git checkout -b newmaster B
$ git cherry-pick F C H D E
$ git branch -M newmaster master

如果你有大量的提交,你可能想要自动化,例如git rev-list,但在不了解情况的情况下提供建议很难。

你提几次日期。虽然Git确实为提交记录了两种类型的时间戳,但在您的情况下,没有一种可能有用。当从其他分支进行挑选更改时,主要关注的是分支拓扑,即提交H在提交F之后的提交G之后出现的事实F.分支之间的拓扑比较,如上例中的origin / master和master,不是可能。换句话说,如果不实际尝试应用补丁,就无法确定樱桃选择的正确顺序。