最後のコミットからファイルを削除し、それ以外はすべて保持するにはどうすればよいですか?まだリモートリポジトリに何もプッシュしていないので、ローカルでプッシュする必要があることに注意してください。
私のワークフロー:
- いくつかのファイルを編集する
- 誤ってという名前の新しいファイルを作成する
untitled.txt
- すべてをコミットする
- 不要な
untitled.txt
ファイルに注意してください - 消して
- ???
- 末永く幸せに過ごす
前もって感謝します!
最後のコミットからファイルを削除し、それ以外はすべて保持するにはどうすればよいですか?まだリモートリポジトリに何もプッシュしていないので、ローカルでプッシュする必要があることに注意してください。
私のワークフロー:
untitled.txt
untitled.txt
ファイルに注意してください前もって感謝します!
を使用して、最後のコミット(メッセージ、ファイルなど)で好きなものを簡単に変更できますgit commit --amend
。
したがって、次のようなことを行います。
git rm untitled.txt
git commit --amend
次のコミットでファイルを削除しないのはなぜですか?通常、コミット履歴を編集することは悪い習慣と見なされており、後続のコミットでファイルを削除するだけでも恥ずかしいことではありません。
git rm untitled.txt
git commit -m "Woopsy"
最後のコミットからファイルを削除するだけでなく、完全に削除したい場合は、他の答えで問題ありません。
しかし、ファイルの作成が偶発的ではなく、コミットへのそのファイルの追加のみである場合はどうなるでしょうか。
最後のコミットからファイルを削除したいが、別のコミットにファイルを追加できるようにファイルを作業コピーに残したい場合は、次のコマンドgit add
に追加できます。--cached
rm
git rm --cached wanted-for-another-commit-but-not-this-one.txt
git commit -a --amend
次に、コミットから削除されたことを確認します。
git show -p # no more diff between /dev/null and the file!
それがまだそこにあることを確認します。
ls -l wanted-for-another-commit-but-not-this-one.txt
追跡されていないファイルのリストにあり、git add
:の対象であることを確認します。
git status
基本的に、作業コピーを保持したまま、ステージングされたファイルのインデックスからファイルを削除します。git commit -a --amend
コマンドは、作業コピーの変更だけでなく、インデックスの変更も認識します。インデックスからの削除に気づき、その変更を新しく書き換えられたコミットに伝播します。