履歴を間違えてしまったので、いくつか変更を加えたいと思っています。問題は、関連のない 2 つの変更を含むコミットがあり、このコミットがローカル (プッシュされていない) 履歴内の他の変更に囲まれていることです。
このコミットをプッシュする前に分割したいのですが、私が目にするガイドのほとんどは、最新のコミットまたはコミットされていないローカルの変更を分割することに関するものです。それ以降のコミットを「やり直す」ことなく、履歴に少し埋もれているコミットに対してこれを行うことは可能ですか?
ベストアンサー1
コミットを分割するためのガイドがありますリベースマニュアルページ簡単にまとめると次のようになります。
ターゲットコミット (例
git rebase -i <commit-to-split>^ branch
) を含む対話型リベースを実行し、編集対象としてマークします。リベースがそのコミットに到達したら、
git reset HEAD^
を使用してコミット前の状態にリセットしますが、作業ツリーはそのまま維持します。段階的に変更を追加してコミットし、必要な数のコミットを行います。
add -p
特定のファイルの変更の一部のみを追加する場合に便利です。commit -c ORIG_HEAD
特定のコミットに対して元のコミット メッセージを再利用したい場合。コミットする内容をテストしたい場合 (良いアイデアです!)、 を使用して
git stash
、コミットしていない部分 (またはstash --keep-index
コミットする前) を非表示にし、テストしてから、git stash pop
残りを作業ツリーに戻します。すべての変更がコミットされるまで、つまりクリーンな作業ツリーになるまで、コミットを続けます。実行し
git rebase --continue
て、現在分割されたコミットの後のコミットの適用を続行します。