Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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,我有一个我正在做的项目,让我们假设它有a1、a2、a3、a4和a5 我决定从头开始重新启动项目,并创建了一个新的存储库。它有b1、b2、b3、b4、b5 但我最终决定a1-a5的历史与b1-b5相关,因此我希望历史是这样的: a1->1 a2->2 a3->3 a4->4 a5->5 b1->6 b2->7 b3->8 b4->9 b5->10 所以我的想法是 从项目a开始 将项目b添加为远程分支 现在,我的第一次尝试是git merge——允许不相关的历史记录b/master,但这将mas

我有一个我正在做的项目,让我们假设它有a1、a2、a3、a4和a5

我决定从头开始重新启动项目,并创建了一个新的存储库。它有b1、b2、b3、b4、b5

但我最终决定a1-a5的历史与b1-b5相关,因此我希望历史是这样的:

  • a1->1
  • a2->2
  • a3->3
  • a4->4
  • a5->5
  • b1->6
  • b2->7
  • b3->8
  • b4->9
  • b5->10
所以我的想法是

  • 从项目a开始
  • 将项目b添加为远程分支
  • 现在,我的第一次尝试是
    git merge——允许不相关的历史记录b/master
    ,但这将
    master
    分支更改为只有
    1,2,3,4,5,10
    的历史记录

    如何将存储库b的主服务器的所有五次提交放在存储库a的主服务器之上

  • 从项目a开始
  • 将项目b添加为远程分支
  • 没错。最后一步是在a上重新设置b的基址。假设a有主机,b被添加为远程b

    git checkout b/master
    git rebase master
    
    根据a和b的编辑方式,可能会出现很多冲突


    现在有没有办法追溯性地将旧的提交添加到rm-rf存储库中,而rm-rf存储整个存储库(除了.git之外),以便旧文件不会渗透到新文件中

    如果你只是想删除A中的所有内容,这告诉我这只是出于历史/考古目的。在这种情况下,将B放在A的上面没有什么意义。相反,将A作为存档分支

    在B

    * git remote add a path/to/a
    * git fetch a
    * git branch a a/master
    * git remote rm a
    

    现在,您的存储库有一个分支,供以后检查。

    谢谢!现在有没有办法追溯性地将旧提交添加到整个存储库(除了.git之外)中,以便旧文件不会渗透到新文件中?@lanza Yes,你可以
    git rm
    在重定B之前在a上最后提交的所有文件。在这一点上,我会问,如果历史没有关系,为什么要合并它们。如果项目是一个死项目,则将其作为一个分支。PS我把重基向后放了。这两者之间有很多连接,但它们之间是拖放和复制/粘贴,因为我当时不知道如何在git中实现这一点。但这两个项目肯定是一个项目,在这个项目中,我被试图弄明白git的方法弄得不知所措,决定从头开始拖放。@lanza将一个分支放在另一个分支上仍然没有什么意义。如果你要删除一个,那只是出于历史目的。把它作为B的一个分支。很公平,我刚刚添加了一个
    archive
    分支。谢谢