2014-10-27 24 views
0

我有两个分支'master'和'current'。通常我会对主人进行一些更改,然后在客户端进行挑选。但有时我直接在当前分支做出了一些承诺,并忘记樱桃选择到主。现在我想所有的提交ID(散)是存在于当前分支的名单,但任何双向如何获取分支1中但不分支2中的提交列表

  1. 要么他们没有樱桃主
  2. 或电流采摘从主失踪分支并没有在主人合并。

如何获取这些从主,但在当前分支缺少提交的列表?

+0

“据我所知,git cherry选项在那里?” - 那你为什么不在你的问题中提到这个?你似乎已经知道答案。 – 2014-10-28 00:10:48

回答

0

你不应该改变一个和樱桃选择它。樱桃采摘是一种特殊情况,应该很少进行。我不确定我是否了解您的工作流程,但您应该做的是将您的更改变为master,然后将其合并到(或根据您想要的树的方式重新分配)current。樱桃采摘将应用引入的差异作为新的提交,所以你不能做任何追踪。如果您合并(不是樱桃采摘),以下方法将起作用。

git log master..current会给你是从current可达提交(即current),但将排除来自master可达者(即它们是在master)。换句话说,它会显示current中的提交,它们在master中不存在。

这里是一个例子。

/---B(current) 
A 
\---C(master) 

现在,git log master..current会给你Bgit log master..current会给你C

所有这些只在正确使用合并时才有效。樱桃采摘打破了这一切。

+0

如果我必须使用现有的工作流程,该怎么办?即我必须在当前分支中获得未被主人挑选的提交。有什么办法吗?据我所知,git樱桃选项在那里? – 2014-10-27 06:52:31

+0

不是。樱桃采摘完全绕过DAG。就好像您手动修补文件并再次提交。 Git无法为您追踪历史记录。你为什么想这样做?伤害自己只是一个时间问题。在某些情况下阅读[this](http://stackoverflow.com/questions/1241720/git-cherry-pick-vs-merge-workflow)。 – 2014-10-27 08:11:46

0

这是一个重复,但搜索未能找到我的原件。

您可以使用

git cherry

git log --cherry

(或--cherry标记或--cherry挑选)。

请注意,列出SHA是100%可靠的。任何cherry命令通常都很不错,但可能有误报。

相关问题