合并两个git仓库的不同分支
场景说明:
在A仓库开发,在某一时刻因为一些原因,将A仓库copy为B仓库继续开发,现在需要将B仓库的变更同步到A仓库,保存提交历史
操作步骤如下:
1. 拉取干净的A仓库与B仓库到本地,目录为A和B(保留.git目录)
2. 将B仓库添加为A仓库的远程仓库
cd A
git remote add repo-B ../B
- 这里远程的B仓库为带了.git的本地目录
3. 把B仓库中数据抓取到A仓库本地
git fetch repo-B
4. 将B仓库的develop分支checkout到A仓库的待合并分支,命名为feature/b-dev
git checkout -b feature/b-dev repo-B/develop
5. 合并A仓库本地的feature/b-dev分支到本地的develop分支
git checkout develop
git merge feature/b-dev -s recursive -Xignore-space-at-eol --allow-unrelated-histories
- 忽略仅行尾\r\n不同的文件
6. 解决冲突
- 可以使用文本编辑器查看冲突文件删掉不需要的内容
- 或者通过sourcetree等GUI软件解决:右键选择冲突文件->解决冲突->使用 他人版本 解决冲突 或 使用 我的版本 解决冲突
7. 保存提交推送
8. 删除远程仓库
git remote rm repo-B