我的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 remote add p2 ../project2
$ git fetch p2
$ git branch p2 remotes/p2/maste
$ git merge p2 # --allow-unrelated-histories for
相似问题