将一组已更改的提交推送到远程git存储库的最有效方法是什么?

时间:2016-09-13 14:24:55

标签: git version-control git-branch git-push

我有一个远程git存储库,有近1000个重提交,即:

C1 -> C2 -> C3 -> ... -> C949 -> C950 -> ... -> C1000

最近,我发现在提交C950中,我在repo中添加了大型二进制对象。我使用git filter-branch --index-filter命令删除了本地存储库中的文件。现在我的本地存储库看起来像这样:

C1 -> C2 -> C3 -> ... -> C949 -> C1001 -> ... -> C1051

我知道我可以在远程存储库上撤消我的提交,然后推送更改。但是对于我的大型提交,我想确保将更改推送到远程存储库的最有效方法。

更新1:到目前为止,很明显我应该在我的远程存储库中找到push-force。但重点是我的远程仓库不允许nonFastForward合并。有没有其他方法可以解决这个问题?

2 个答案:

答案 0 :(得分:2)

目前您正在尝试将一些已更改的提交(C1001 - > ... - > C1051)重写为您之前已经推送它们的回购(即提交C950 - > .. - > C1000)所以,你必须强行推动。

关于远程仓库上的FastForward配置,您应该可以直接访问远程仓库以更改配置。

答案 1 :(得分:1)

如果git没有使用某些大型对象,它会自动删除它们,并且不会与任何遥控器共享它们。

使用以下方法推送使用过的参考文献:

git push origin master

(根据需要用你的遥控器和你的分支替换origin和master。)

它只会推送master中包含的对象和提交,这不应该是你的大提交的情况。