新しいウェアハウスを作成し、そこにテキスト ファイルを 1 つだけ配置し、それぞれ 6 つのコミットを作成します。この時点で、git log --oneline は次のようになります
ファイルの内容は次のとおりです
442452d コミットを破棄したいが、e09949e コミットは保持したい。その方法は次のとおりです。
git replace --hard 260effc
次に git Cherry-pick e09949e
以下に示すように、この時点で競合が発生しました
私が理解できないのは、論理的に言えば、e09949e の送信には '3' ではなく '4' だけが含まれているはずです。 「3」が手動で削除された場合、ファイルを削除するだけでは意味がありませんか? それとも私の使用法に何か問題があるのでしょうか?神に導きを求めてください! ! !
git revert 442452d だけではどうでしょうか?
Commit は相対的な変更を記録し、変更されたコンテンツの上位行と下位行に関連します。前の行が失われると、競合が報告されるため、手動で解決する必要があります。 2 つのコミットが関連関数内に存在しなくなった場合は、直接元に戻すことができます。
さらに、このリセット --ハードを実行してからチェリーピックする方法を使用することは良くありません。他の共同作業者が途中で他のコミットを追加し、その後の競合処理がより困難になる可能性があります。
cherry-pick より良い使用シナリオは、1 つのブランチ上に別のブランチの別の機能が必要な場合です。
e09949e
には4
のみが含まれているため、これは前のコミット442452d
との差分です。e09949e
只包含4
,是针对前一个commit442452d
的差异而言。可你现在把
しかし、現在は442452d
给去掉了,希望把e09949e
的父节点从442452d
指到260effc
442452d
を削除し、442452d
からe09949e
の親ノードを260effc
にポイントしたいと考えています。確かに紛争になるだろう。