如何从上次提交中删除文件,但保留其他所有内容?请注意,我还没有将任何内容推送到远程存储库,所以我只需要在本地执行此操作。
我的工作流程:
untitled.txt
untitled.txt
文件提前致谢!
答案 0 :(得分:3)
答案 1 :(得分:1)
为什么不让下次提交删除文件?编辑提交历史记录通常被认为是不好的做法,并且在后续提交中删除文件不会有任何耻辱。
git rm untitled.txt
git commit -m "Woopsy"
答案 2 :(得分:0)
如果您不仅要删除上次提交中的文件,而且还要完全删除该文件,则其他答案都可以。
但是如果文件的创建不是偶然的,只是将该文件添加到提交中呢?
如果您只想从上次提交中删除该文件,但将该文件保留在工作副本中,以便可以git add
将其提交给另一个提交,则可以将--cached
添加到rm
1}}命令:
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
命令不仅可以识别工作副本中的更改,还可以识别索引中的更改。它注意到从索引中删除并将该更改传播到新重写的提交。