web-dev-qa-db-ja.com

gerrit-git(プル対チェックアウト対チェリーピック)

Androidのgerrit ex: link では、パッチをダウンロードするために4つのオプションがあります。

  1. リポジトリのダウンロード
  2. チェックアウト
  3. 引く
  4. チェリーピック

それらの違いは何ですか?

これが私が考えていることです。どうか明らかにしてください

  1. リポジトリのダウンロード->このコミットまで(プロジェクト内のすべてのgitリポジトリの)完全なソースコードをダウンロードします。
  2. チェックアウト->それが何であるかわからない。
  3. プル->それが何をするのか分かりませんか?
  4. cherry-pick->この変更のみをダウンロードし、ソースコードにマージしようとします。

プルとチェックアウトはチェリーピックとは異なることを知っています。しかし、それらはどう違うのですか?

41
mk..

あなたは最初のものについては正しいです。残りは次のとおりです。

  1. Checkoutフェッチ最新の変更。このレポは既にダウンロードされているはずです。それマージしませんこれらの新しい変更は作業ディレクトリに反映されます。後で自由にそれらをマージできます。

  2. Pullフェッチ変更およびマージそれら同じ名前のローカルブランチへ

  3. Cherry-pickフェッチコミットおよび現在のローカルブランチ上で再生、したがってまったく新しいコミットの作成フェッチしたもの。

これらは、gitで実際に意味するものとは少し異なります。 checkoutおよびcherry-pick変更を自動的に取得しません。 checkoutは、指定したコミットにHEADを使用するだけで、そのコミット時とまったく同じように作業ディレクトリを作成します。同様に、cherry-pickは、すでにローカルにアクセスしているコミットを再生するために使用されます。

36
Akash Agrawal

Gitを使用すると、独自のバージョンのリポジトリがあります。他のリポジトリと同期すること。 fetchを使用して、リモート参照を更新します。他の人が得たものを更新します。 checkoutを使用して、特定のリビジョンに切り替えます。これを使い始めたばかりなら、これをやりたいと思うでしょう。

すでにリモートブランチをフォローしている場合は、ローカルブランチを更新するだけで済みます。それがpullがあなたのためにすることです。リモートブランチのすべての変更をローカルブランチに適用します。更新したいだけの場合は、これが必要です。

cherry-pickリポジトリの任意の場所から1つの変更を選択して、ローカルブランチに適用します。何らかの理由で別のブランチにいても、その特定の変更が必要な場合に便利です。その変更をプッシュせずにチェリーピックした場合、この変更は永続的ではないことに注意してください。ローカルリポジトリにコミットされますが、リモートにはコミットされません(ただし、場合によっては必要になるかもしれません)。

たとえば、git--basicsの詳細を参照してください here

5
fejese

チェックアウト:ブランチの特定のCHANGEに依存しているときに使用します。同僚が消費するためにいくつかのAPIをチェックインし、その変更を新しいローカルブランチにチェックアウトして、変更の作業を開始できると言います。

Cherrypick:特定のCHANGEをローカルブランチまたは特定のリリースブランチに適用してから、チェリーピックします。 1.1リリースにパッチ修正があり、その修正/変更を2.0ブランチに適用したい場合、単純にチェリーピックすることができます。これにより、修正を含む2.0ブランチに新しいCHANGEが作成されます。

ここにグラフィカルな表現があります: http://think-like-a-git.net/sections/rebase-from-the-ground-up/cherry-picking-explained.html

2
Matt