我錯誤地使用了 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
然後你就可以開始提交,並再次推動一切。