2015-08-25 27 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 

然后你就可以开始提交,并再次推动一切。