gerrit - git(pull vs checkout vs cherrypick)这是为了什么?

时间:2014-10-20 07:26:11

标签: git gerrit

在Android的gerrit ex:link中,要下载补丁,我会看到4个选项。

  1. repo download
  2. 结帐
  3. 樱桃挑选
  4. 他们之间有什么区别?

    以下是我对他们的看法。请澄清

    1. repo download - >下载完整源代码(项目中的所有git repos)直到此提交
    2. 结帐 - >不确定它是什么。
    3. 拉 - >不确定它是做什么的?
    4. cherry-pick - >它尝试仅下载此更改并将其合并到源代码中。
    5. 我知道拉和结帐不同于樱桃挑选。但它们有何不同?

3 个答案:

答案 0 :(得分:34)

你对第一个是正确的。以下是其余的:

  1. 结帐 提取最新更改。你应该已经下载了这个repo。它不会合并这些新的更改,但会让您的工作目录反映出来。您可以稍后在闲暇时将它们合并。

  2. 提取更改并将合并 到本地分支同名

  3. Cherry-pick 提取提交并在当前本地分支上播放,因此创建一个全新的提交,恰好与它提取的提交具有相同的更改。

  4. 它们与git中的实际含义略有不同。 checkoutcherry-pick不会自动获取更改。 checkout只需将HEAD带到您指定的提交,从而使工作目录与该提交完全一样。同样,cherry-pick用于重放您已拥有本地访问权限的提交。

答案 1 :(得分:5)

使用git,您可以拥有自己的存储库版本。你与他人同步'库。使用fetch更新远程引用,即。刷新别人得到的东西。使用checkout切换到特定修订版。如果你刚刚开始使用它,你想要这样做。

现在,如果您已经关注了远程分支,则可能只需要更新本地分支。这是pull为您所做的事情。它将远程分支中的所有更改应用于本地更改。如果您只是想要更新它,那么您需要这样做。

cherry-pick允许您从存储库中的任何位置选择一个更改,并将其应用于您的本地分支。如果您出于任何原因在不同的分支上进行但仍需要进行特定更改,则非常方便。请注意,如果你在不推动改变的情况下挑选这种改变并不持久。它已经提交到您的本地存储库但不提供给远程存储库(尽管如此,它可能是您需要的)。

详细了解git基础知识,例如here

答案 2 :(得分:2)

结帐:您希望在依赖分支中的特定CHANGE时使用它。假设您的同事已经签入了一些API供您使用,您可以将这个CHANGE签出到新的本地分支机构并开始处理您的更改。

Cherrypick:您希望将特定的CHANGE应用于您的本地分支或特定的发布分支,然后您开始挑选。 想象一下,你的1.1版本中有一个修补程序,你想要将修复/ CHANGE应用到你的2.0分支,你可以简单地点赞它。 它将在包含修复程序的2.0分支中创建一个新的CHANGE。

这是一个图形表示: http://think-like-a-git.net/sections/rebase-from-the-ground-up/cherry-picking-explained.html