💻
任意の過去のコミットを修正する場合
コミットを何回か繰り返した後にコミット対象外のファイルを発見した時の対処方法です。
以下は参考例です。
具体例
この中で余分なコミットが 2 つ目にあったとします。
git
でコミット済みのコードから特定のファイルを除外するには、次の手順を実行します。
具体的には、以下の方法でコミットを修正または変更できます。
コマンド解説
-
git reset HEAD^ -- <ファイルパス>
: コミットから指定したファイルをインデックスから外します。ただし、ワークツリーの変更内容は保持されます。 -
git commit --amend --no-edit
: 直前のコミットを修正し、新しい内容で上書きします。
1. rebase 開始
git rebase
を使って、過去の特定のコミットを編集します。
今回は 3 つのコミットの二番目が対象です。
git rebase -i HEAD~3
上記コマンドを実行すると下図のようになります。
2. rebase 対象決定
2 つ目のコミットを編集モードにします。
pick => e(edit)
エディタを esc => wq で閉じます。
3. 余分なファイルを除外
git reset HEAD^ -- <除外したいファイルのパス>
又は
git reset 'HEAD^' -- <除外したいファイルのパス>
4. 変更反映
変更をコミットします。
git commit --amend --no-edit
5. rebase 完了
rebase を継続します。
git rebase --continue
実行例です
6. 確認
以上で、コミットから不要なファイルを外すことが出来ました。
Discussion