如何将Git仓库B的文件直接合并到仓库A(非子目录形式)
解决两个Git仓库根目录文件合并的问题
问题出在你拉取的Repo_B分支中,文件并非处于根目录,而是存放在子目录下,导致合并时不会与Repo_A根目录的同名文件产生冲突,反而直接作为子目录添加。以下是修正后的操作步骤,确保两个仓库的文件合并到同一根目录:
确保Repo_A的master分支工作区干净
先检查当前分支是否有未提交的变更,否则先提交或暂存:git status添加并拉取Repo_B的远程内容
cd C:\repos\Repo_A git remote add Repo_B <remote-link-to-RepositoryB> git fetch Repo_B创建临时分支并调整Repo_B的文件到根目录
- 基于Repo_B的master创建临时分支:
git checkout -b temp-branch Repo_B/master - 将Repo_B子目录内的所有文件移动到根目录(假设子目录名为
Repo_B):git mv Repo_B/* . # 删除空的子目录 git rm -r Repo_B - 提交这个目录调整:
git commit -m "Move Repo_B files to root directory for merge"
- 基于Repo_B的master创建临时分支:
合并临时分支到master
- 切回master分支:
git checkout master - 执行合并并允许无关历史:
git merge temp-branch --allow-unrelated-histories
- 切回master分支:
此时,两个仓库根目录下的同名文件会触发合并冲突,你可以逐个解决这些冲突,之后提交合并结果即可得到合并后的项目版本。如果合并后仍有部分文件未触发冲突,说明这些文件仅存在于其中一个仓库中,Git会自动将其添加到工作区,你可根据需求保留或删除。
内容的提问来源于stack exchange,提问作者Comfortable_Onion
相关产品推荐
相关产品推荐

