Git コミットのチェリーピック
Git では、既存のブランチからコミット (一連の変更) をチェリーピックして、その変更を別のブランチに適用することができます。チェリーピックを使うと、次のようなことができます:
- デフォルトブランチから以前のリリースブランチへのバグ修正のバックポート。
- フォークからの変更をアップストリームリポジトリにコピーします。
コマンドラインからコミットをcherry-pickできます。GitLab ユーザーインターフェイスでは、以下のこともできます:
- マージリクエストからすべての変更をチェリーピックします。
- 単一のコミットをチェリーピックします。
- アップストリームリポジトリへのフォークからcherry-pick。
コマンドラインからのcherry-pick
この説明では、デフォルトブランチ (main
) から別のブランチ (stable
) にコミットをチェリーピックする方法を説明します:
-
デフォルトブランチをチェックアウトし、それをもとに新しい
stable
ブランチをチェックアウトします:git checkout main git checkout -b stable
-
デフォルトブランチに戻ります:
git checkout main
-
変更を加えてからコミットします:
git add changed_file.rb git commit -m 'Fix bugs in changed_file.rb'
-
コミットログを表示します:
$ git log commit 0000011111222223333344444555556666677777 Merge: 88888999999 aaaaabbbbbb Author: user@example.com Date: Tue Aug 31 21:19:41 2021 +0000
-
commit
行を特定し、その行の文字列と数字をコピーします。この情報はコミットの SHA (Secure Hash Algorithm) です。SHA はこのコミットの一意な識別子で、今後のステップで必要になります。 -
SHA がわかったところで、
stable
ブランチをもう一度チェックしてみましょう:git checkout stable
-
コミットを
stable
ブランチに cherry-pick して、SHA
をあなたのコミットの SHA に変更します:git cherry-pick <SHA>
関連するトピック
- Commits APIでコミットをチェリーピック
- チェリーピックについてのGit ドキュメント