我有存储库A和存储库B,我想将B合并到A中,这意味着我想将B的所有文件与A的文件合并(文件具有相同的名称)。我希望得到很多冲突的文件,我首先需要在提交更改之前解决这些文件,但是每个文件都只是提交到A的子目录中,基本上仍然是存储库B,所以总结一下,实际上没有任何变化。我可以将存储库B的文件夹复制并粘贴到A中,结果是一样的。
我使用了以下策略:
cd C:\repos\Repo_A
git remote add Repo_B <remote-link-to-RepoitoryB>
git fetch Repo_B
git checkout -b merge-branch Repo_B/master
git checkout master
git merge merge-branch --allow-unrelated-histories
运行最后一个命令后,我得到的信息是只有.gitignore遇到了冲突。其余的文件是“阶段性更改”,这是不可能的,因为有很多文件与存储库A不同,但它们不会以某种方式发生冲突或合并在一起。
这是我在最后一个命令后得到的:enter image description here
这是我使用“git checkout -B merge-branch Repo_B/master”后得到的文件夹结构:enter image description here
请注意,所有内容都被推送到B,Rep_A中的master分支实际上没有任何变化。在提交历史中,看起来所有内容都合并了,但文件夹Repository_A中的文件实际上没有任何变化。
我如何才能真正合并到一个目录中,然后我可以从中工作并认为是项目的最新版本?
编辑:这是Repository_A(或文件夹)的文件结构:enter image description here
下面是A中的Repository_B的情况:enter image description here
1条答案
按热度按时间ctehm74n1#
简单而明显的解决方案是确保两个存储库具有相同的文件夹结构或相同的项目名称。这样,当将仓库添加到原始文件夹时,文件可能会发生冲突,以便git能够提供合并。
我知道这听起来很明显,但我就是没想到这会是解决办法。我花了几个小时研究这个问题,没有任何地方说“确保命名在两个存储库/文件夹中是相同的”。其他仓库与原始仓库具有相同的项目文件夹名称,这一点很明显吗?
澄清一下:我只是将repos_B的项目名称和文件夹名称更改为repos_A,并重复上面显示的过程。工作正常