💻

任意の過去のコミットを修正する場合

に公開

コミットを何回か繰り返した後にコミット対象外のファイルを発見した時の対処方法です。
以下は参考例です。

具体例

コミット一覧

この中で余分なコミットが 2 つ目にあったとします。

余分コミットファイル

git でコミット済みのコードから特定のファイルを除外するには、次の手順を実行します。
具体的には、以下の方法でコミットを修正または変更できます。

コマンド解説

  • git reset HEAD^ -- <ファイルパス>: コミットから指定したファイルをインデックスから外します。ただし、ワークツリーの変更内容は保持されます。
  • git commit --amend --no-edit: 直前のコミットを修正し、新しい内容で上書きします。

1. rebase 開始

git rebase を使って、過去の特定のコミットを編集します。
今回は 3 つのコミットの二番目が対象です。

git rebase -i HEAD~3

上記コマンドを実行すると下図のようになります。

git rebase before

2. rebase 対象決定

2 つ目のコミットを編集モードにします。

git rebase after

pick => e(edit)

エディタを esc => wq で閉じます。

git rebase operation

3. 余分なファイルを除外

git reset HEAD^ -- <除外したいファイルのパス>
又は
git reset 'HEAD^' -- <除外したいファイルのパス>

4. 変更反映

変更をコミットします。

git commit --amend --no-edit

5. rebase 完了

rebase を継続します。

git rebase --continue

実行例です

git rebase complete

6. 確認

rebase after log
rebase after log

以上で、コミットから不要なファイルを外すことが出来ました。

GitHubで編集を提案

Discussion