所以我做了一件坏事。
在进行一系列更改的过程中的某个地方,我意识到一个非预期的文件已经进入了一两次提交。因为直到后来才意识到这一点,包含该文件的提交现在已被推送到远程。我想要&需要提交,我只是想从他们中删除这个特定的文件。
当然,我需要做的就是进入每个角落。我树的裂缝(本地和远程)并删除该文件。我已尝试使用filter-branch
和filter-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.
答案 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)
您可以将修复程序实施为“新修复程序”,例如立即删除文件,并将修复程序提交到存储库。
然后,当它们与您进行更改的版本同步时,它应该传播到每个分支。