如何从已推送的git提交中删除文件

时间:2015-08-25 19:47:58

标签: git gitlab

我错误地使用了     git commit -a 并在提交中添加了比我想要的文件更多的文件。还有另一个修改过的文件,我希望将其添加为此提交中包含的单独提交。我如何返回(不丢失对文件的修改)然后再单独提交它们。

我也把它推到了一个偏远的地方(虽然我知道自从我推动以来没有人拉过任何东西)。

非常感谢!

4 个答案:

答案 0 :(得分:6)

警告,这将远程覆盖更改。如果有人取消当前的提交并在其上工作,可能会发生不好的事情。

# Reset last commit, but keep changes staged
$ git reset --soft HEAD^1

# Unstage unwanted file(s) and recommit
$ git reset HEAD path/to/file
$ git commit

# Push the new commit with force to overwrite changes
$ git push origin -f

答案 1 :(得分:0)

我会立即将之前的提交推送到远程,运行git reset HEAD~将您的工作区置于您所处的脏状态,然后重新处理您的添加,提交和推送。

答案 2 :(得分:0)

您可以在本地删除这些文件并推送新的提交。

如果您希望将来使用这些文件,可以将其添加到.gitignore文件

答案 3 :(得分:-1)

如果将其推送到单独的分支(而不是主分支),则可以从远程删除整个分支。

之后,您可以使用

还原提交
git reset --soft HEAD~1

然后你可以开始提交并再次推送所有内容。