Git 合并两个不同仓库的代码
仓库 (srvt-20231118) https://e.coding.net/g-qhco8175/demo/srvt-20231118.git
仓库 (srvt-20231227) https://e.coding.net/g-qhco8175/demo/srvt-20231227.git
合并两个不同仓库思路:添加两个远程仓库,将两个代码作为两个分支,然后手动合并譬如想
将 srvt-20231118 和 srvt-20231227 合并到 srvt-20231227 仓库中。
1、克隆项目到本地
克隆项目 srvt-20231227 到本地
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt
$ git clone https://e.coding.net/g-qhco8175/c30/srt-20231227.git
Cloning into 'srt-20231227'...
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
Resolving deltas: 100% (1/1), done.
进入 克隆项目 文件夹内
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt
$ ls
srt-20231227/
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt
$ cd srt-20231227/
2、添加要合并仓库
添加要合并仓库 srvt-20231118 的远程地址
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (master)
$ git remote add merge_branch https://e.coding.net/g-qhco8175/c30/srt-20231118.git
为了方便,这里将其命名为 merge_branch , 这个时候查看远程地址,应该已经有两个地址了
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (master)
$ git remote -v
merge_branch https://e.coding.net/g-qhco8175/c30/srt-20231118.git (fetch)
merge_branch https://e.coding.net/g-qhco8175/c30/srt-20231118.git (push)
origin https://e.coding.net/g-qhco8175/c30/srt-20231227.git (fetch)
origin https://e.coding.net/g-qhco8175/c30/srt-20231227.git (push)
3、从远程仓库下载第二个仓库的代码
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (master)
$ git fetch merge_branch
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
warning: ----------------- SECURITY WARNING ----------------
warning: | TLS certificate verification has been disabled! |
warning: ---------------------------------------------------
warning: HTTPS connections may not be secure. See https://aka.ms/gcm/tlsverify for more informatio
n.
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 13 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (13/13), 4.02 KiB | 60.00 KiB/s, done.
From https://e.coding.net/g-qhco8175/c30/srt-20231118
* [new branch] master -> merge_branch/master
4、建分支然后合并到新分支
将从 srvt-20231118 仓库下载的 master 分支作为要合入到项目srvt-20231227 项目,需要先将其分支 checkout 到一个新分支上
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (master)
$ git checkout -b dev merge_branch/master
Switched to a new branch 'dev'
branch 'dev' set up to track 'merge_branch/master'.
这里没有冲突。实际项目中可能会有一些冲突,譬如有些文件提示无法删除,
subModule 提示问题等等。按照提示解决即可(手动删除或者修改,用 git status 查看冲突位置)。
5、切换原来的分支
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
6、合并 master 分支和 dev 分支
Administrator@USER-20230818FF MINGW64 /e/Repositories/srt/srt-20231227 (master)
$ git merge --no-ff --allow-unrelated-histories dev
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Auto-merging readme.txt
CONFLICT (add/add): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.
7、查看冲突
Administrator@USER-20230818FF MINGW64 /e/Repositories/srvt/srvt-20231227 (master|MERGING)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both added: README.md
both added: readme.txt
8、处理冲突
因为在开发过程中 会有很多文件冲突,如果通过命令行或者记事本记录处理效率太低,这里我们使用 SourceTree 来管理这仓库冲突。
下载安装 SourceTree
安装好后, 选择 文件 -打开 找到clone 项目的位子,打开就可以查看到冲突文件
然后使用丢弃行,或者块,或者编辑处理冲突文件,处理完成后 提交 推送至 第一个仓库 srvt-20231227