7

我团队中的某个人将一个大文件推送到了 git 服务器,团队中的每个人现在都有一个包含该大文件的项目的克隆。

我按照http://help.github.com/removing-sensitive-data/中的指南进行操作,它可以在我的本地源代码树以及远程服务器上运行。但是一旦另一个人从远程服务器获取新数据,他将通过向服务器推送新的提交来轻松地重新引入大文件。

通常,团队成员会执行以下操作来与其他人分享他的提交:

git fetch origin
git rebase origin/master
git push origin

在'rebase'的步骤中,旧的大文件被重新引入他的本地提交中。当然,直接的方法是要求团队中的每个人在我删除大文件后重新克隆项目,但并不是每个人都愿意这样做。除了为每个人重新克隆整个项目之外,我正在寻找其他方法。

有什么建议么?谢谢。

4

3 回答 3

3

看看过滤器树。您需要编辑引入文件的提交。完成后,每个人都可以获取。这将在其存储库中创建非快进远程分支 - 现在删除有问题的文件后的每次提交都会有所不同。当他们在新的远程分支上重新调整当前更改时,它不应该再推送大对象。

另一种方法是git rebase --preserve-merges -i编辑有问题的提交。

于 2011-03-14T16:27:30.077 回答
0

progit book 有一个详细的示例,使用git filter-branch(不是其他帖子提到的过滤树)。章节在这里

'删除对象' http://progit.org/book/ch9-7.html

于 2011-03-15T12:34:56.143 回答
0

如果删除大文件的执行时间合理,可以写一个脚本将文件删除,rebase后指导大家在本地运行脚本,并使用hook检查是否重新引入。

于 2011-03-14T15:35:14.103 回答