Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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 如何将文件从RepoA导入RepoB,同时维护与这些文件关联的提交?_Git_Github_Version Control_Repository_Commit - Fatal编程技术网

Git 如何将文件从RepoA导入RepoB,同时维护与这些文件关联的提交?

Git 如何将文件从RepoA导入RepoB,同时维护与这些文件关联的提交?,git,github,version-control,repository,commit,Git,Github,Version Control,Repository,Commit,在RepoA内部,有一个目录(directoryA)和一些文件(file1,file2,file3),我想把这些文件从RepoA移到RepoB) 这是RepoA: RepoA directoryA file1 file2 file3 directoryB file1 file2 file3 在我想做的事情之后,RepoB看起来像: RepoB directoryA

RepoA
内部,有一个目录(
directoryA
)和一些文件(
file1
file2
file3
),我想把这些文件从
RepoA
移到
RepoB

这是RepoA:

RepoA
    directoryA
        file1
        file2
        file3
    directoryB
        file1
        file2
        file3
在我想做的事情之后,
RepoB
看起来像:

RepoB
    directoryA
        file1
        file2
        file3
我可以从
RepoA
下载
directoryA
并将其上载到
RepoB
,但我将丢失与
file1
file2
file3
相关的提交

我也不能将整个
RepoA
传输到
RepoB
(如在合并中),因为来自
directoryB
的提交在
RepoA
中是不相关的

Edit:我尝试使用
git筛选器分支--子目录筛选器目录名--all

它对我不起作用,每次我在执行该命令后尝试拉动时,都会出现错误:

fatal: refusing to merge unrelated histories

首先,请创建一个新分支并在此过程中签出,因为以下操作将修改本地RepoA的历史记录并删除一些文件:

在本地报告中

(1) git filter-branch --subdirectory-filter directoryA <branch>
(2) mkdir directoryA
(3) mv * directoryA
(4) git add .
(5) git commit -am 'message'
(6) git remote add repoA <local RepoA’s path>
(7) git pull RepoA <branch>
(1)git筛选器分支--子目录筛选器目录a
(2) mkdir目录
(3) mv*目录
(4) git添加。
(5) git提交-am“消息”
在本地报告中

(1) git filter-branch --subdirectory-filter directoryA <branch>
(2) mkdir directoryA
(3) mv * directoryA
(4) git add .
(5) git commit -am 'message'
(6) git remote add repoA <local RepoA’s path>
(7) git pull RepoA <branch>
(6)git远程添加repoA
(7) git pull RepoA
如果在步骤
(7)
中出现错误:
致命:拒绝合并不相关的历史记录
,您可以通过执行
git pull RepoA--allow unrelated history

然后,RepoB中将显示
file1
file2
file3
的提交历史记录。您可以使用
gitk--all
更清晰地查看


有关更多详细信息,请参阅。(前两条评论(和)可能会进一步澄清)。

您的意思是您希望保留回购A的历史记录?全部还是只针对与目录相关的文件?我只想要我正在移动的文件的历史记录,而不是整个Repo A历史记录。不起作用。repo-a中的其他目录消失了。另外,我无法从本地repo-a拉到repo-b:我得到了错误>>致命:拒绝合并无关的历史我刚读完你提到的参考资料,还读了评论。所有这些错误都会导致相同的错误,并且总是发生在相同的步骤中(拉步骤)$fatal:拒绝合并无关的历史是的,在第一个命令之后,您将发现RepoA只有子文件夹中包含的文件现在位于RepoA的根目录中。这就是为什么第二个和第三个命令会这样做:再次将文件放入子文件夹。对于git pull步骤,您可以尝试将git pull RepoA作为一个master——允许不相关的历史记录。这可能意味着什么?你知道我是否应该关心这个存储库中将来可能发生的事情吗?任何历史冲突或其他。这是由于您的RepoA和RepoB没有相关的提交、文件或历史记录造成的。获取信息对您来说无关紧要。
致命:拒绝合并不相关的历史记录
当您确实想要拉取或合并时,只需添加
——允许不相关的历史记录