2017-03-06 88 views
0

我对git比较陌生,我需要执行以下操作。将模块从一个回购库移动到另一个回收库

  1. 给出一个模块,X,在回购A,我想移动,X,以回购乙
  2. 我需要这样做,为什么同时保持某些作者的历史。即保留“乔”和“鲍勃”的提交历史并注意其他。

关于如何做到这一点的任何想法?

谢谢!

+1

可能重复的[git:将更改引入一个回购到另一个回购](http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one- repo-to-another-repo) –

+0

您在这里没有定义“模块”,这可能很重要。同时,请注意,在Git中,历史*是*提交。这两个是不可分割的。每个提交都是一个快照;历史是通过随时间播放快照而形成的。 – torek

+0

[将子目录分离(移动)到单独的Git存储库中](http://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository) – Joe

回答

0

你可以做这样的事情:

首先加入 '回购一个' 本地

git remote add repoa https://github.com/user/repoa.git 

然后做一个混帐推到回购

git push repoa 

Likewis EADD '回购B'本地

git remote add repob https://github.com/user/repob.git 

然后做一个混帐推回购回

git push repob 

这样做会推高整个存储库的当前状态。

现在分别克隆库:

cd /path/where/you/want/new/repos/to/be 
git clone https://github.com/user/repoa.git repoa 
git clone https://github.com/user/repob.git repob 

(其中repoa作为第二个参数是要克隆到目录)

,并在每次运行git rm -r与目录/文件要从回购中删除,例如回购-a:

git rm -r src/repob docs/repob 

再次重复上述操作以回购-b。

然后为每个库运行以下命令阶段,以对缺失承诺:

git add -u 

然后做一个承诺,你通常会:

git commit -m "Deleted files from repo b" 

然后推

git push origin 

重新执行最后3个命令进行repo-b。

这将创建两个独立的存储库,其中包含回购库中所有文件的完整历史记录,不幸的是,我不知道保留“只有该回购库中的文件”历史记录的方法。