将两个 Git 代码库合并成一个同时保留修改记录的过程,可以通过几个步骤完成。
这里提供一种常见的方法,使用git remote
和git merge
命令来实现。
假设场景
- 代码库A:原始代码库,希望将另一个代码库合并到这个库中。
- 代码库B:要合并的代码库,将这个库的内容和修改记录合并到代码库A中。
步骤概览
- 备份两个代码库:在进行合并操作前,为两个代码库做好备份是一个好习惯,以防万一合并过程中出现问题。
- 在代码库A中创建一个新的分支:为了保证主分支的干净整洁,可以在代码库A中创建一个新的分支来进行合并操作。
- 将代码库B添加为代码库A的远程仓库:通过
git remote add
命令将代码库B作为一个新的远程仓库添加到代码库A中。 - 拉取代码库B的内容:使用
git fetch
命令拉取代码库B的所有分支和提交记录。 - 合并代码库B到新分支:使用
git merge
或git cherry-pick
命令将代码库B的内容合并到代码库A的新分支中。 - 解决冲突并提交:如果合并过程中出现冲突,解决这些冲突,然后提交合并结果。
- (可选)合并新分支回主分支:在确认合并后的代码无误之后,可以将新分支合并回代码库A的主分支中。
具体操作
以下操作假设你已经在本地拥有代码库A的副本,并且具备代码库B的访问权限。
1. 在代码库A中创建新分支
cd path/to/repoA
git checkout -b merge-repoB
2. 添加代码库B为远程仓库
git remote add repoB /path/to/repoB
如果代码库B位于远程服务器上,路径应该是一个URL。
3. 拉取代码库B的内容
git fetch repoB
4. 合并代码库B到新分支
合并代码库B的主分支(或你想要合并的特定分支)到当前分支:
git merge repoB/main --allow-unrelated-histories
这里repoB/main
指的是代码库B的main
分支。
如果代码库 B 使用的是master
分支,相应地替换为repoB/master
。
--allow-unrelated-histories
选项允许合并两个没有共同祖先的历史。
5. 解决合并冲突
如果合并时遇到冲突,需要手动解决冲突,然后继续完成合并操作。
6. 提交合并结果
git commit -am "Merge repoB into repoA"
7. 将新分支合并回主分支(可选)
如果满意合并结果,可以将这个新分支合并回主分支:
git checkout main
git merge merge-repoB
通过这个过程,将两个代码库合并成一个,并保留了它们的修改记录。