从上次提交中删除文件

时间:2012-06-26 02:42:15

标签: git

如何从上次提交中删除文件,但保留其他所有内容?请注意,我还没有将任何内容推送到远程存储库,所以我只需要在本地执行此操作。

我的工作流程:

  • 编辑一些文件
  • 无意中创建了一个名为untitled.txt
  • 的新文件
  • 承诺一切
  • 请注意不需要的untitled.txt文件
  • 删除它
  • ???
  • 之后过上幸福的生活

提前致谢!

3 个答案:

答案 0 :(得分:3)

您可以使用git commit --amend轻松更改上次提交中的任何内容(消息,文件等)。

所以你会做这样的事情:

git rm untitled.txt
git commit --amend

答案 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命令不仅可以识别工作副本中的更改,还可以识别索引中的更改。它注意到从索引中删除并将该更改传播到新重写的提交。