git在两个分支之间有不同的日志

时间:2016-05-21 01:37:19

标签: git gitk

我已经创建了一个测试git项目,以确定如何在两个分支之间获取不同的日志。

在大多数情况下,我们会遇到这样的情况:分支大师已经选择了一些提交来掌握,见下图: enter image description here

“I”提交被选为主分支。我对master和dbg_feature之间不同日志的预期结果应仅为“J”。

但实际上,当我在命令下运行时:

git cherry -v master dbg_feature

我会得到“我”和“J”,樱桃挑选的一个“我”仍列在其中:

+ a1915061be2f445d322abc7bfb7d19bbb357b917 I
+ 6486e899e07b6d6f539cbcad10655dcc345f434d J

如果我在命令下运行:

git log --oneline --no-merges master..dbg_feature

输出如下:

6486e89 J
a191506 I

如果运行git rev-list命令如下:

git rev-list --oneline --no-merges --cherry-pick --right-only master...dbg_feature
6486e89 J
a191506 I

结果与git log相同。

那么在这两个分支之间得到确切的不同日志的正确命令是什么?

1 个答案:

答案 0 :(得分:0)

我不清楚“不同的承诺”是什么意思。但是,您提到使用git cherry表明您正在讨论the git rev-list documentation所指的“等效”或“补丁等效”提交(或者他们相反,我和他们称之为“不等价”的提交) ):

  

--cherry-mark

     

--cherry-pick一样(见下文),但标记等效提交=而不是省略它们,而不等价的提交+

     

--cherry-pick

     

当提交集受限于对称差异时,省略任何在“另一方”引入相同更改的提交。

     

例如,如果您有两个分支AB,则只列出其中一侧的所有提交的常用方法是使用--left-right(请参阅下面的示例) --left-right选项的描述。但是,它显示了从另一个分支中挑选出来的提交(例如,“b上的第3个”可能是从分支A中挑选出来的)。使用此选项,这些提交对将从输出中排除。

     

--left-only
  --right-only

     

列表仅在对称范围的相应一侧提交,即仅< > --left-right --cherry-pick --right-only A...B。{/ p>}。      

例如,B省略AA提交的提交,或者是+提交的提交等效提交。换句话说,这会列出git cherry A B的{​​{1}}次提交。更准确地说,--cherry-pick --right-only --no-merges给出了确切的列表。

     

--cherry

     

--right-only --cherry-mark --no-merges的同义词;有用的是将输出限制在我们这一侧的提交中,并使用git log --cherry upstream...mybranch标记已应用于分叉历史记录另一侧的输出,类似于git cherry upstream mybranch

同样,所有这些都是git rev-list命令的参数。由于git rev-listgit log几乎是相同的命令(除了输出格式之类的小细节:-)),它们也与git log一起使用。