Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在筛选器分支后将所有人重新设置为已更改的git历史记录_Git - Fatal编程技术网

在筛选器分支后将所有人重新设置为已更改的git历史记录

在筛选器分支后将所有人重新设置为已更改的git历史记录,git,Git,我们的git回购历史上有一堆不再需要的大文件。我想使用Pro Git中介绍的过滤器分支技术删除它们: 然后我将使用git push--force all将其发送到我们的共享回购,如下所述: 但是。ProGit说我需要让每个人都重新设置基础,因为我正在改变历史。我们很少使用rebase,通常只是作为合并的替代方式。我可以让每个人都重新克隆,但那是最后的手段;一些开发人员有本地分支,他们希望保留更改 那么:在我们的本地存储库中,每个人都需要做些什么来重新建立新更改的共享回购的基础呢?我们每个追踪

我们的git回购历史上有一堆不再需要的大文件。我想使用Pro Git中介绍的过滤器分支技术删除它们:

然后我将使用git push--force all将其发送到我们的共享回购,如下所述:

但是。ProGit说我需要让每个人都重新设置基础,因为我正在改变历史。我们很少使用rebase,通常只是作为合并的替代方式。我可以让每个人都重新克隆,但那是最后的手段;一些开发人员有本地分支,他们希望保留更改

那么:在我们的本地存储库中,每个人都需要做些什么来重新建立新更改的共享回购的基础呢?我们每个追踪分支机构都要做一次吗?如果你想一步一步地(如果你愿意的话,我很乐意)提供,我们的回购协议被称为原始协议,主分支是主分支。

这里有一个选项

  • 在名为
    rebased\u master
    的分支上创建重基主控形状(而不是原始的
    master
  • 您不需要推送该分支,让所有开发人员将其下拉,并将其本地分支重新设置到
    rebased_master
    。如果他们从重新基址之前的等效提交中重新基址,并且对要删除的文件没有任何更改,那么一切都应该正常
  • 一旦每个人都将其开发分支移动到
    rebased_-master
    ,您就可以将原始
    master
    rebased_-master
    删除到
    master

注意:我还没有对此进行测试,所以请确保您有一份回购协议副本,以防出现问题

关键是每个开发人员在完成重基之前不要丢失对
master
的原始引用。为此,让他们在强制推送后执行
提取
(而不是拉),然后对每个本地分支执行以下操作:

git rebase --onto origin/master master <local_branch>

这听起来不错-我会在它真正工作后的第二天早上接受它!
git pull --force