我错误地使用了 git commit -a 并在提交中添加了比我想要的更多的文件。还有另一个修改后的文件,我想添加为包含在此提交中的单独提交。我如何返回(而不会丢失对文件的修改),然后再单独提交它们。如何从已推入的git提交中删除文件
我也将它推到了一个偏远的地方(尽管我知道一个事实,那就是自从我推动之后没有人拉动任何东西)。
非常感谢!
我错误地使用了 git commit -a 并在提交中添加了比我想要的更多的文件。还有另一个修改后的文件,我想添加为包含在此提交中的单独提交。我如何返回(而不会丢失对文件的修改),然后再单独提交它们。如何从已推入的git提交中删除文件
我也将它推到了一个偏远的地方(尽管我知道一个事实,那就是自从我推动之后没有人拉动任何东西)。
非常感谢!
警告,这将远程覆盖更改。如果任何人取消了当前的提交并且在其上面工作,可能会发生不好的事情。
# 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
我会立即将以前的提交推送到远程,运行git reset HEAD~
将工作空间置于您所处的脏状态,然后重新处理您的添加,提交和推送。
您可以在本地删除这些文件并推送新的提交。
如果你喜欢excude这些文件在将来,你可以把它添加到的.gitignore文件
如果你把它推到一个单独的分支(非主),就可以从远程删除整个分支。
之后,你能恢复的承诺使用
git reset --soft HEAD~1
然后你就可以开始提交,并再次推动一切。