Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git cherry pick和数据模型完整性_Git_Version Control_Merge_Cherry Pick - Fatal编程技术网

Git cherry pick和数据模型完整性

Git cherry pick和数据模型完整性,git,version-control,merge,cherry-pick,Git,Version Control,Merge,Cherry Pick,考虑到两个分支已经分离,并且需要将一个分支(而不是所有分支)的特定提交引入另一个分支,git cherry pick正好实现了这一点 一段时间后,需要完全合并这两个分支。git如何知道它已经完成了在过去被cherry选中的提交,从而不会重新引入它 您可能想阅读 为了更好地比较merge和cherry-pick,特别是cherry-pick不存储父id,因此将不知道它已经有了cherry在过去拾取的提交,因此它不会重新引入它 及 关于如何避免在这种情况下重复提交,请使用rebase中提到的“”文章

考虑到两个分支已经分离,并且需要将一个分支(而不是所有分支)的特定提交引入另一个分支,git cherry pick正好实现了这一点

一段时间后,需要完全合并这两个分支。git如何知道它已经完成了在过去被cherry选中的提交,从而不会重新引入它

您可能想阅读

为了更好地比较merge和cherry-pick,特别是cherry-pick不存储父id,因此将知道它已经有了cherry在过去拾取的提交,因此它不会重新引入它

关于如何避免在这种情况下重复提交,请使用
rebase

中提到的“”文章说:

假设我们有主分支和分支b:

结果将是:

我们将得到以下结果:

这将产生:

给了我们:

将导致:


您可以使用
git cherry master
(如果您在
主题
分支上)检测主机上是否已经存在提交。

Subversion 1.5+通过元数据管理此操作(元数据也管理合并)。在git中,合并跟踪是数据模型中固有的,因为每个提交“知道”其父项。但在采摘樱桃的情况下,似乎有一个灰色区域。@tonio第二个链接回答了我的问题。Thx托尼奥。但似乎我还是不太明白rebase是如何工作的。。我的意思是,即使在重定基调之后,樱桃色的承诺不应该仍然出现吗?我希望我能绿色勾选两个答案,因为tonios的答案解决了我的问题,但你的答案让我内心的tonios答案平静下来。谢谢你的git内部信息@yannisf:tonio完全配得上绿色记号;)我只是想在这个话题上增加一些精确性。
  o---X   <-- master
   \
    b1---b2---b3---b4   <-- b
$ git checkout master
$ git cherry-pick “b1’s SHA”
$ git cherry-pick “b3’s SHA”
  o---X---b1'---b3'   <-- master
   \
    b1---b2---b3---b4   <-- b
  o---X---b1'---b3'---Y   <-- master
   \
    b1---b2---b3---b4   <-- b
$ git merge b
  o---X---b1'---b3'---Y--- M  <-- master
   \                     /
     b1----b2----b3----b4   <-- b
$ git rebase master b
  o---X---b1'---b3'---Y   <-- master
                       \
                        b2---b4   <-- b
$ git checkout master
$ git merge b
  o---X---b1'---b3'---Y---b2---b4   <-- master, b
      A---B---C topic
     /
D---E---A'---F master
               B'---C' topic
              /
D---E---A'---F master