在RepoA
内,有一个目录(directoryA
)包含一些文件(file1
,file2
,file3
),我想从这些文件中移动这些文件RepoA
至RepoB
。
这是RepoA
:
RepoA
directoryA
file1
file2
file3
directoryB
file1
file2
file3
在我想要做的之后,RepoB
看起来像是:
RepoB
directoryA
file1
file2
file3
我可以从directoryA
下载RepoA
并将其上传到RepoB
,但我会丢失与file1
,file2
和{{ 1}}。
我也无法将整个file3
转移到RepoA
(如合并中),因为来自RepoB
的提交在directoryB
中无关紧要。
修改:我尝试使用RepoA
它对我不起作用,每次我在执行该命令后尝试拉动时都会收到错误:
git filter-branch --subdirectory-filter directoryName -- --all
答案 0 :(得分:2)
首先,请创建一个新分支并检查此过程,因为以下操作将修改本地RepoA的历史记录并删除一些文件:
在本地RepoA ,
(1) git filter-branch --subdirectory-filter directoryA <branch>
(2) mkdir directoryA
(3) mv * directoryA
(4) git add .
(5) git commit -am 'message'
在本地RepoB ,
(6) git remote add repoA <local RepoA’s path>
(7) git pull RepoA <branch>
如果您在步骤fatal: refusing to merge unrelated histories
中收到错误:(7)
,则可以通过执行git pull RepoA <branch> --allow-unrelated-histories
然后,file1
,file2
和file3
的提交历史记录将显示在RepoB中。您可以使用gitk --all
更清晰地查看。