git:使用filter-branch删除文件后无法推送更改

时间:2011-11-24 15:59:08

标签: git push git-filter-branch

我在heroku上有一个应用程序,不幸的是我们的git存储库中有一些文件不应该从头开始提交。

但现在其他人即将在项目中进行协作,这些文件总是会产生合并冲突,所以我需要删除它。我已使用此命令从所有提交历史记录中成功删除这些文件:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch -r foldername' HEAD

但我无法将这些更改推送到服务器,我之前被迫提取,因此通过filter-branch丢失了我的更改。

如何将这些更改推送到服务器,以便我们不再存在冲突问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

运行git push --force不会强迫你拉,也就是说它会跳过对共同祖先的检查。但是,服务器可以禁止使用该选项,至少使用钩子。

关于重写的说明一般推动历史:如果你确定没有其他人克隆存储库,那也没关系。否则重写历史是一个很大的禁忌,因为它会给那些在自己的分支机构工作的人带来很多麻烦。 (例外情况可能是开发/ pu分支,例如官方git存储库使用。在他们的设置中,分支将定期重置为master,通常在新版本或类似版本之后,并且该操作已被充分记录,因此它不应该不要让任何人感到惊讶。)