删除我不应该提交给Git的文件

时间:2010-10-31 23:24:00

标签: git

所以我做了一件坏事。

在进行一系列更改的过程中的某个地方,我意识到一个非预期的文件已经进入了一两次提交。因为直到后来才意识到这一点,包含该文件的提交现在已被推送到远程。我想要&需要提交,我只是想从他们中删除这个特定的文件。

当然,我需要做的就是进入每个角落。我树的裂缝(本地和远程)并删除该文件。我已尝试使用filter-branchfilter-tree进行了一些操作,但当我尝试推送更改时会被拒绝。

我有什么选择?我做错了什么?

感谢。

更新

根据max的要求,这是我在尝试推送时得到的消息:

$ git push origin develop
To git@codaset.com:robwilkerson/cakephp-polyclip-plugin.git
! [rejected]        develop -> develop (non-fast-forward)
error: failed to push some refs to 'git@codaset.com:robwilkerson/cakephp-polyclip-plugin.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about fast-forwards' section of 'git push --help' for details.

3 个答案:

答案 0 :(得分:10)

GitHub上有a nice guide个结束,可能会对你有帮助。

答案 1 :(得分:2)

你有没有添加-f(强制)到git push?如果没有该标志,则无法覆盖“旧”提交。

-f, --force
       Usually, the command refuses to update a remote ref that is not an
       ancestor of the local ref used to overwrite it. This flag disables
       the check. This can cause the remote repository to lose commits;
       use it with care.

如果其他人已从这些存储库中撤出,它可能会变得混乱。

答案 2 :(得分:0)

您可以将修复程序实施为“新修复程序”,例如立即删除文件,并将修复程序提交到存储库。

然后,当它们与您进行更改的版本同步时,它应该传播到每个分支。