ブランチを作成し、新しいブランチで一連の面倒な作業を行わずに、ローカル リポジトリにコミットした後で、単一のコミットをいくつかの異なるコミットに分割することは可能ですか?
ベストアンサー1
git rebase -i
それをやります。
まず、クリーンな作業ディレクトリから始めます。git status
保留中の変更、削除、または追加は表示されません。
ここで、どのコミットを分割するかを決定する必要があります。
A) 最新のコミットを分割する
最新のコミットを分割するには、まず次の手順を実行します。
$ git reset HEAD~
次に、通常の方法で各部分を個別にコミットし、必要な数のコミットを生成します。
B) コミットをさらに分割する
これには、リベース、つまり履歴の書き換えが必要です。正しいコミットを指定するには、いくつかの選択肢があります。
3コミット前であれば
$ git rebase -i HEAD~3
3
コミットがいくつ前にあるかを示します。カウントしたいツリーよりも後ろにある場合は、
$ git rebase -i 123abcd~
123abcd
分割したいコミットの SHA1 はどこでしょうか。現在のブランチ全体をリベースしたい場合は、次のようにします。
$ git rebase -i
マージ先の別のブランチ (例: 機能ブランチ) にいる場合は、次の操作を行います
master
。$ git rebase -i master
リベース編集画面が表示されたら、分割したいコミットを見つけます。その行の先頭を(短縮形 )pick
に置き換えます。バッファを保存して終了します。これで、編集したいコミットの直後にリベースが停止します。次に、次の操作を行います。edit
e
$ git reset HEAD~
通常の方法で各部分を個別にコミットし、必要な数のコミットを生成します。
ついに
$ git rebase --continue
著作権を保持したい場合
コミットの作者と日付を保存したい場合は、以下を参照してください。他のコミットから作成者と日付をコピーしますが、メッセージはコピーしません