Gitコミットからのファイル削除

私はGitを使用しており、いくつかのファイルをコミットしています。

git commit -a

後日、あるファイルが誤ってコミットに追加されていることに気づきました。

最後のコミットからファイルを削除するにはどうしたらいいですか?

ATTENTION!もし、前回のコミットからファイルを削除して、ディスク上に残しておきたいだけなら、上のjuzzlinの回答を読んでください。

これが最後のコミットで、ローカルとリモートのリポジトリから完全にファイルを削除したい場合は、次のようにします。

  1. ファイルを削除する: git rm
  2. amend フラグをつけてコミットする: git commit --amend.

amend フラグは git に再度コミットするように指示しますが、このコミットは最後のコミットと「マージ」(2 つのブランチをマージするという意味ではありません)されます。

コメントにあるように、ここで git rm を使うことは rm コマンドそのものを使うことと同じです。

解説 (5)

サーバーに変更をプッシュしていない場合は

git reset --soft HEAD~1

これですべての変更がリセットされ、1つ前のコミットに戻ります。

変更をプッシュした場合は、@CharlesB が回答している手順に従ってください。

解説 (8)

rmを使ってファイルを削除すると、削除されます

git では、コミットの際には常に削除ではなく追加を行うことになります。この例では、ファイルを最初のコミットの前の状態に戻し (ファイルが新しい場合は 'rm' という削除アクションになるかもしれません)、その後に再コミットすればファイルは削除されます。

ファイルをある以前の状態に戻すには

    git checkout  <path_to_file>

または、リモート HEAD での状態に戻す。

    git checkout origin/master <path_to_file>

の状態に戻し、コミットを修正すると、ファイルがリストから消えているのがわかるはずです(ディスクからは削除されていません!)。

解説 (0)