从修正的提交中删除文件

时间:2012-04-12 13:28:52

标签: git version-control

我将提交推送到我不小心添加文件的仓库。没有其他人从远程仓库合并,所以我可以重写历史。但是当我从本地提交中删除文件(unstage,而不是从源代码控制或磁盘中删除)时,我无法推送更改。 git push显示所有最新的

4 个答案:

答案 0 :(得分:10)

你走了:

git checkout HEAD~ -- path/to/your/file
git add path/to/your/file
git commit --amend -C HEAD

git diff -p HEAD~ -- path/to/your/file | git apply -R
git commit --amend -C HEAD

git reset HEAD~ -- path/to/your/file
git commit --amend -C HEAD

答案 1 :(得分:5)

如果您需要重写完整提交,请尝试使用

git reset HEAD^
git add <files to be part of the commit>
# or git add -pu
git commit -C <previous commit number>

在执行此操作之前,您需要保留最后一个提交编号,以便能够重用提交消息/日期/作者。

答案 2 :(得分:4)

尝试:

git rm --cached <yourfile>
git commit --amend
git push -f

答案 3 :(得分:3)

虽然我做了类似于Colin和ydroneaud所建议的事情,但

答案是使用

git push +sa1:sa1

其中sa1是我的分支。这迫使甚至“无所事事”。