2015-08-25 140 views
2

我錯誤地使用了 git commit -a 並在提交中添加了比我想要的更多的文件。還有另一個修改後的文件,我想添加爲包含在此提交中的單獨提交。我如何返回(而不會丟失對文件的修改),然後再單獨提交它們。如何從已推入的git提交中刪除文件

我也將它推到了一個偏遠的地方(儘管我知道一個事實,那就是自從我推動之後沒有人拉動任何東西)。

非常感謝!

回答

4

警告,這將遠程覆蓋更改。如果任何人取消了當前的提交併且在其上面工作,可能會發生不好的事情。

# 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 
0

我會立即將以前的提交推送到遠程,運行git reset HEAD~將工作空間置於您所處的髒狀態,然後重新處理您的添加,提交和推送。

0

您可以在本地刪除這些文件並推送新的提交。

如果你喜歡excude這些文件在將來,你可以把它添加到的.gitignore文件

-1

如果你把它推到一個單獨的分支(非主),就可以從遠程刪除整個分支。

之後,你能恢復的承諾使用

git reset --soft HEAD~1 

然後你就可以開始提交,並再次推動一切。