1. ホーム
  2. git

[解決済み] 前のコミットを複数のコミットに分割する

2022-03-19 23:30:28

質問

ブランチを作成し、新しいブランチでいろいろな作業をすることなく、ローカルリポジトリにコミットした後に、一つのコミットをいくつかの異なるコミットに分割することは可能ですか?

解決方法は?

git rebase -i がやってくれるでしょう。

まず、クリーンな作業ディレクトリから始めます。 git status は、保留中の変更、削除、追加がないことを示す必要があります。

さて、どのコミットを分割するかを決めなければなりません。

A) 直近のコミットを分割する

最新のコミットを分割するには、まず。

$ git reset HEAD~

では、通常の方法で、必要な数だけコミットしてください。

B) もっと前のコミットを分割する

これには リベース つまり、履歴を書き換えることです。正しいコミットを指定するために、いくつかの選択肢があります。

  • もし3コミット前のものであれば

      $ git rebase -i HEAD~3
    
    

    ここで 3 は何回前のコミットかです。

  • 数えたいと思うよりもツリーの奥にある場合、次のようになります。

      $ git rebase -i 123abcd~
    
    

    ここで 123abcd は、分割したいコミットのSHA1です。

  • 別のブランチ (機能ブランチなど) にいて、そこにマージしたい場合 master :

      $ git rebase -i master
    
    

リベースの編集画面が表示されたら、バラバラにしたいコミットを探します。 その行の冒頭で pickedit ( e 略して)。 バッファを保存して終了します。 これで、Rebase は編集したいコミットの直後で停止します。 次に

$ git reset HEAD~

通常の方法で、必要な数だけコミットしてください。

最後に

$ git rebase --continue