我们的Git存储库最初是作为单个怪物SVN存储库的一部分开始的,其中每个项目都有自己的树,如下所示:
project1/branches
        /tags
        /trunk
project2/branches
        /tags
        /trunk
显然,将文件从一个文件移动到另一个文件非常容易svn mv.但在Git中,每个项目都在自己的存储库中,今天我被要求将子目录从中移动project2到project1.我做了这样的事情:
$ git clone project2 
$ cd project2
$ git filter-branch --subdirectory-filter deeply/buried/java/source/directory/A -- --all
$ git remote rm origin  # so I don't accidentally the repo ;-)
$ mkdir -p deeply/buried/different/java/source/directory/B
$ for f in *.java; do 
>  git mv $f deeply/buried/different/java/source/directory/B
>  done
$ git commit -m "moved files to new subdirectory"
$ cd ..
$
$ git clone project1
$ cd project1
$ …可能重复:
如何在保留子目录的同时拆分git存储库?
有一次,我将我的代码添加到现有的git repo中,并且已经承诺了很多,因为其他开发人员已经提交到repo中的其他现有文件. 现在我想将我的代码拆分为自己的repo,但保留我的特定文件的所有更改历史记录.
通过阅读其他人为分割代码所做的工作,我正在查看filter-branch和执行--index-filter或--tree-filter使用rm命令来查找我不关心的文件.我不想使用,--subdirectory-filter因为它不适合将我的代码保存为topdir的子目录(我们也共享一个子目录).更复杂的是,原始存储库中的一些文件随着时间的推移已经移动了一些,并且有一些文件被创建然后被删除.这使得设计一个rm列表有点......具有挑战性.
我正在寻找一种方法来过滤所有/除了/文件/目录列表.有人知道这样做的方法吗?
我有两个git存储库说A和B,都包含一个名为file1.cc的文件.是否可以将repo A中file1.cc的历史合并/复制到repo B中的file1.cc?
问题是我们已经将文件从repo A移动到repo B,并且所有文件的历史记录都丢失了.但现在一些开发人员已经开始研究回购B并推动了他们的改变.所以现在我想要从repo A到repo B的一些文件的合并/复制历史记录,这些文件仅适用于某些文件.有可能这样做吗?或者一旦丢失的文件的历史永远丢失?
请帮忙.提前致谢.