2014-10-20 210 views
32

在Android的gerrit ex:link下載補丁後,我看到4個選項。gerrit-git(pull vs checkout vs cherrypick)這是爲了什麼?

  1. 回購下載
  2. 結賬
  3. 櫻桃採摘

它們之間有什麼區別?

這是我對他們的看法。請澄清

  1. 回購下載 - >下載完整的源代碼,直到這個(項目中的所有的git回購)提交
  2. 結賬 - >不知道它是什麼。
  3. 拉 - >不知道它做什麼?
  4. cherry-pick - >它會嘗試下載此更改並將其合併到源代碼中。

我知道pull和checkout不同於cherry-pick。但他們有什麼不同?

+2

注到潛在的應答者:這個問題是關於格里特,不混帳。如果你發佈一個答案來解釋這些術語在Git中的含義,那麼你就不會回答這個問題。 – 2016-05-02 21:01:04

回答

23

你是對的第一個。以下是他們的休息:

  1. 結帳獲取的最新變化。你應該已經有這個回購下載。它不合並這些新的更改,但使您的工作目錄反映它們。稍後您可以將它們合併在一起。

  2. 獲取變化併合並他們成同名當地分支機構。

  3. 櫻桃挑獲取提交並播放它在當前本地分支的頂部,從而創建一個全新提交碰巧具有相同的變化作爲一個其取。

它們與它們在git中的實際含義有些不同。 checkoutcherry-pick不會自動獲取更改。 checkout只需要HEAD到您指定的提交,從而使工作目錄與提交時完全相同。同樣,cherry-pick用於重放您已具有本地訪問權限的提交。

+1

1. Checkout不僅僅_fetch_補丁集,它還_check out_補丁集的確切提交。 2.補丁集的提交被合併到當前的頭部。分支名稱與事物無關。 – 2014-10-21 05:51:24

4

有了git,你有自己的版本庫。您與其他人的存儲庫同步。通過fetch,您可以更新遠程引用,即。刷新其他人得到的。用checkout您切換到特定修訂版。你想這樣做,如果你剛開始使用這個。

現在,如果您已經在關注遠程分支,那麼您可能只需更新本地分支。這就是pull爲你做的。它將遠程分支中的所有更改應用到本地分支。如果您已經使用它,您只需要更新即可。

cherry-pick讓您從存儲庫中的任何位置選擇一項更改,並將其應用於本地分支。如果您出於任何原因在不同的分支機構上,但仍然需要特定的更改,這很方便。請注意,如果您在沒有推動這種變化的情況下進行挑選,那麼這種變化不會持久。它承諾你的本地存儲庫,但不是遠程的(這可能是你需要的情況下)。

查看更多有關git的基本知識,例如here

1

結帳:你想使用它,當你依賴於一個分支特別的變化。說你的同事已經檢查了一些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

相關問題