web-dev-qa-db-ja.com

gitにチェリーピックの変更を受け入れさせる

私はブランチでgerritレビューからチェリーピックをしました。 gerritコードレビューでは、2つのパッチセットがあり、1つ前にパッチを選んだので、2つ目のパッチセットを実行したいのですが、競合があります。どうすればすべての変更をgitに強制できますか?ありがとう!

36
Jiang

チェリーピッキングのコミットの変更を常に優先するように指示できます。

git cherry-pick commitish --strategy-option theirs

commitishは、コミットのSHA-1ハッシュ、またはそのブランチの最後のコミットの場合はbranch-name、その前のコミットの場合はbranch-name~1になります。

逆にしたい場合は、以下を使用します。

git cherry-pick commitish --strategy-option ours

--strategy-optionの省略形は-Xpper case X)です。

74
CoDEmanX

git cherry-pick -X theirs <commit-hash-you-want-to-force-cherry-pick-from>

私の通常のワークフローは次のとおりです。

私がmasterを使用していて、コミットしたばかりだと仮定します。

  1. そのコミットのコミットハッシュを取得します。
  2. 次に、そのようなコミットをしたいブランチにチェックアウトします。
  3. 次に、上記のコマンドを実行します。 git cherry-pick -X theirs 5cf3412
3
tallamjr

次のようなものでブルートフォースできます。

git show cb1e6a:path/to/filename > path/to/filename
git add path/to/filename
git commit

しかし、もっと簡単な方法があると確信しています。

0
Jason B

既に競合状態にある場合は、単に

# add only conflicting files here
git checkout --theirs path/to/file
git add path/to/file
git cherry-pick --continue
0
geek-merlin