昨日、メインブランチに2つのコミットをチェリーピックしました。そのうちの1つはマージ競合を引き起こし、それらを解決し、コミットしてOriginにプッシュしました。今日、次のエラーが表示されたときにサーバーからプルしようとしています。
$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$
Gitステータスの読み取り:
$ git status
# On branch main
# Your branch is behind 'Origin/main' by 2 commits, and can be fast-forwarded.
#
$
私は次のことを試してみました:
$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$
これを解決する方法についてのアイデアはありますか?前もって感謝します!
以下で解決しました:rm .git/CHERRY_PICK_HEAD
これはgit内の内部一貫性を保証するものではないが、これまでのところ私にとって問題はないため、これは危険であると認識しています...
次回はgit cherry-pick --abort
、それ以外の場合は多かれ少なかれ動作するはずです。
git cherry-pick --continue
が機能しない場合、それはgitが古すぎることを意味します。このオプションは commit 5a5d80f でgit 1.7.8(2011年12月)に導入されました
.git/sequencer/todoから最初の命令をドロップし、そこにリストされている残りのチェリーピックを実行し、以下にリストされている初期コマンドからオプション(「
-s
」および「-X
」と考えます) 「.git/sequencer/opts
」。
最近(2014)、「You have not concluded your cherry-pick
」が表示されたときに使用するコマンドになります。
私の 2014年の以前の回答 なので、今日(2018)の適切なコマンドはgit cherry-pick --quit
です。
Git 2.19(2018年第3四半期)より前では、「git cherry-pick --quit
」はCHERRY_PICK_HEAD
を削除できませんでした。 。
commit 3e7dd99 (2018年8月16日)by NguyễnTháiNgọcDuy(pclouds
) を参照してください。
( 浜野邦夫-gitster
- in コミット39e415c 、2018年8月20日)
cherry-pick:修正-CHERRY_PICK_HEADを削除しないで終了
--quit
は--abort
であることになっていますが、HEAD
は復元されません。CHERRY_PICK_HEAD
を残しておくと、cherry-pick
がまだ進行中の他のコマンドを間違える可能性があります(例:「git commit --amend
」は動作を拒否します)。 それもきれいにします。
--abort
の場合、CHERRY_PICK_HEAD
を削除するこのジョブは "git reset
"にあるため、他に何もする必要はありません。しかし、確認のために--abort
テストに追加のチェックを追加しましょう。
別のオプション:Git 2.23(2019年第3四半期)では、git cherry-pick --continue
が実際に機能します!
マルチステップのチェリーピックまたは復帰の1つのステップがリセットまたはコミットされると、コマンドラインのプロンプトスクリプトが現在のステータスを認識できず、改善されました。
commit e981bf7 (2019年7月1日) Phillip Wood(phillipwood
) を参照してください。
( 浜野邦夫-gitster
- in commit 8a4acc5 、2019年7月19日)
git-Prompt
:cherry-pick
/revert
検出の改善ユーザーが一連のチェリーピックの途中で競合解決をコミットまたはリセットしたり元に戻したりすると、
CHERRY_PICK_HEAD
/REVERT_HEAD
が削除されるため、これらのファイルがない場合は確認する必要があります.git/sequencer/todo
チェリーピックまたはリバートが進行中かどうかを確認します。
cherry-pick
またはrevert
が進行中かどうかを確認します。ユーザーが一連のピックまたはリバートの途中で 'git commit
'との競合解決をコミットしたら、CHERRY_PICK_HEAD
/REVERT_HEAD
は存在しないため、todo
ファイルを読み取る必要があります。