【问题标题】:Remove files from Git commit从 Git 提交中删除文件
【发布时间】:2012-09-10 23:46:07
【问题描述】:

我正在使用 Git,并且我使用

提交了一些文件
git commit -a

后来发现有一个文件被错误的添加到了commit中。

如何从上次提交中删除文件?

【问题讨论】:

  • 此链接非常适合您的问题:stackoverflow.com/questions/307828/…
  • @CharlesB:是的,这是我最后一次提交
  • 你把提交推送到服务器了吗?
  • 我只是使用:git reset filepath

标签: git git-commit


【解决方案1】:

现在 Apple 已将所有 MacOS 用户都更新为 zsh,因此正确答案不再有效。

git reset --soft HEAD^
zsh: no matches found: HEAD^

您可以通过单引号来防止 shell 将 ^ 视为特殊字符。

git reset --soft 'HEAD^'

或者,您可以在 shell 中禁用此行为。 通过更新你的 ~/.zshrc 与

unsetopt nomatch

【讨论】:

    【解决方案2】:

    将文件保存在本地(从 gi​​t 中删除)

    如果你想保留文件,你可以像这样使用--catch

    git rm --cached filename
    

    删除本地文件(并从 git 中删除)

    如果您想删除文件,请使用:

    git rm filename
    

    【讨论】:

      【解决方案3】:

      目前没有一个答案是合理的。听起来有足够的需求,应该提出一个真正的解决方案: https://github.com/git/git/blob/master/Documentation/SubmittingPatches

      git --uncommit

      会很好。我知道我们不想修改历史记录,但如果我是本地人并且不小心添加了本地“hack”文件并希望将其从提交中删除,这将非常有帮助。

      【讨论】:

      • 自 2019 年以来有 git restore。看看吧:)
      猜你喜欢
      • 2021-12-31
      • 2017-11-27
      • 2021-02-24
      • 2018-04-04
      • 2016-04-17
      • 2014-06-27
      • 1970-01-01
      • 2017-09-18
      • 2021-08-02
      相关资源
      最近更新 更多