在执行提取时防止不需要的提交重新输入git历史记录

时间:2011-07-19 22:35:25

标签: git

我在分布式团队中工作,并使用中央git存储库来协作处理某些任务(而不是代码)。我们有几个团队成员,他们是轻量级用户,对推送,拉动,添加提交,状态等感到满意;但不是更先进的概念。

最近意外添加了一个非常大的提交,我们想删除它。我做了一个rebase -i,删除了错误的提交(其中包含超过1GB的二进制文件),并且push -f更改了这些更改。

但是,每次会员在将来做一个git pull时,它只会将他们的本地更改合并到我的更改中!如何强制他们放弃他们的本地提交历史并使用我的。我的解决方案是给所有人发电子邮件并做:

git fetch
git checkout origin/master
git branch -f master origin/master
git checkout master

还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

git revert commit_hash

这应该恢复该提交所引入的更改并创建一个新提交,并删除这些更改。这是首选,因为它显示了引入的更改的历史记录,然后删除了更改,而不是尝试假装从不发生了。

答案 1 :(得分:0)

您可以添加一个update hook来验证违规提交是否在他们试图推送的历史记录中,如果它确实包含有问题的提交,则拒绝推送。