Git 跨项目合并代码
Summary: Author: 张亚飞 | Read Time: 2 minute read | Published: 2023-03-30
Filed under
—
Categories:
Linux
—
Tags:
Note,
Git 如何跨项目合并代码
现在有两个项目
- A: git@git.baijiashilian.com:LLL/brtc/beta-lowcode/rtc-manage.git
- B: git@git.baijiashilian.com:LLL/brtc/lowcode/rtc-manage.git
需要将 B
项目的分支 config/vrtc_envs
合并到 A
项目的 master
分支,在 gitlab
上跨项目提交 merge_request
提示有冲突,但是看不出哪里有冲突,于是决定在本地合并代码解决冲突
先将 A
项目拉下来
git clone git@git.baijiashilian.com:LLL/brtc/beta-lowcode/rtc-manage.git rtc-manage-beta
获取远端需要合并的仓库A,我们将其命名为 target
仓库
rtc-manage-beta
git remote add target git@git.baijiashilian.com:LLL/brtc/lowcode/rtc-manage.git
将 B
项目拉取到本地
git fetch target
使用 git branch -a
显示分支列表,可以看到除了 remotes/origin/*
分支,还有 remotes/target/*
分支:
$ git branch -a
* master
master-v2
remotes/origin/HEAD -> origin/master
remotes/origin/debug_login
remotes/origin/dev-3_0
remotes/origin/dev-v1_0
remotes/origin/dev-v2_0
remotes/origin/feeSet
remotes/origin/fee_list
remotes/origin/liubo/switch-env
remotes/origin/master
remotes/origin/master-v2
remotes/origin/operate
remotes/origin/permission
remotes/origin/release
remotes/origin/release-beta
remotes/target/abc-test
remotes/target/brtc/modes
remotes/target/canary_changes
remotes/target/config/vrtc_envs
remotes/target/debug_login
remotes/target/dev-3_0
remotes/target/dev-v1_0
remotes/target/dev-v2_0
remotes/target/feeSet
remotes/target/fee_list
remotes/target/hl/switch-media-node
remotes/target/hl/switch-media-node-new
remotes/target/hl/test
remotes/target/liubo/switch-env
remotes/target/master
remotes/target/new-publish
remotes/target/operate
remotes/target/permission
remotes/target/release
remotes/target/release-beta
remotes/target/vrtc/envs
将 remotes/target/config/vrtc_envs
合并到 master
,即可看到冲突:
$ git branch
* master
master-v2
$ git merge remotes/target/config/vrtc_envs
Removing pages/账号配置项/queries/JSPartnerConfig-updateRTCCustomConfig.json
Removing pages/账号配置项/queries/JSPartnerConfig-updateRTCConfig.json
Removing pages/账号配置项/queries/JSPartnerConfig-setSaaSConfigValue.json
Removing pages/账号配置项/queries/JSPartnerConfig-loadRTCCustomConfig.json
Removing pages/账号配置项/queries/JSPartnerConfig-loadRTCConfig.json
Removing pages/账号配置项/queries/JSPartnerConfig-getPartnerConfig.json
Auto-merging pages/ReleaseVersion/canvas.json
CONFLICT (content): Merge conflict in pages/ReleaseVersion/canvas.json
Auto-merging application.json
Automatic merge failed; fix conflicts and then commit the result.
如何撤销 merge
一次某同事不小心操作失误将开发分支 zyf/v4
合并到 master
后并合并,又执行 Revert
将此次合并回滚,虽然代码是回滚了,但是导致了后面再重新合并 zyf/v4
后发现大量冲突。
2024-05-16 10:45:22 on Mac OS nu ❯ git log
commit aae9c797361e2145b0e072a84eb448ab4ea6c7a5 (HEAD -> master-2024-05-15, origin/master-2024-05-15)
Merge: 0f9f3e5b8 01e1fef42
Author: chenjia <10001@example.net>
Date: Tue Apr 23 06:05:33 2024 +0000
Merge branch 'revert-0f9f3e5b' into 'master'
Revert "Merge branch 'zyf/v4' into 'master'"
See merge request power/zs-console!242
commit 01e1fef42ff17bde28573151de1e3f716133c301 (origin/revert-0f9f3e5b)
Author: chenjia <10001@example.net>
Date: Tue Apr 23 05:35:45 2024 +0000
Revert "Merge branch 'zyf/v4' into 'master'"
This reverts merge request !240
commit 0f9f3e5b8c0ca78813aa377e0511ad806f1f9dfc
Merge: 726c55185 958d01aa1
Author: chenjia <10001@example.net>
Date: Tue Apr 23 05:30:27 2024 +0000
Merge branch 'zyf/v4' into 'master'
Zyf/v4
See merge request power/zs-console!240
commit 958d01aa1fe48a2b7dec3c6a986f13dffaddc339
Merge: d050067b8 726c55185
Author: chenjia <10001@example.net>
Date: Tue Apr 23 05:29:30 2024 +0000
Merge branch 'master' into 'zyf/v4'
# Conflicts:
# src/models/machine.go
# src/repositories/user/repository.go
# src/services/report/machine.go
commit d050067b8436d5e106f2a1686eba88e33e36b76c
Merge: 2f3df2c10 d6535c653
Author: chenjia <10001@example.net>
Date: Tue Apr 23 13:23:36 2024 +0800
Merge branch 'zyf/v4' of git.aukoo.cn:power/zs-console into zyf/v4
commit 2f3df2c10be694b786e978faf5489e7ff81a701c
Author: chenjia <10001@example.net>
Date: Tue Apr 23 13:23:34 2024 +0800
优惠卷列表
commit d6535c653fc78b131ccee200f08a00cc0957b81f
此时如果使用 reset
将提交 958d01aa1fe48a2b7dec3c6a986f13dffaddc339
回滚会发现只是没有这条合并记录,但是该分支的提交记录仍在,示例: 优惠卷列表
。
$ git reset 958d01aa1fe48a2b7dec3c6a986f13dffaddc339 --hard
$ git log
commit 958d01aa1fe48a2b7dec3c6a986f13dffaddc339
Merge: d050067b8 726c55185
Author: chenjia <10001@example.net>
Date: Tue Apr 23 05:29:30 2024 +0000
Merge branch 'master' into 'zyf/v4'
# Conflicts:
# src/models/machine.go
# src/repositories/user/repository.go
# src/services/report/machine.go
commit d050067b8436d5e106f2a1686eba88e33e36b76c
Merge: 2f3df2c10 d6535c653
Author: chenjia <10001@example.net>
Date: Tue Apr 23 13:23:36 2024 +0800
Merge branch 'zyf/v4' of git.aukoo.cn:power/zs-console into zyf/v4
commit 2f3df2c10be694b786e978faf5489e7ff81a701c
Author: chenjia <10001@example.net>
Date: Tue Apr 23 13:23:34 2024 +0800
优惠卷列表
commit d6535c653fc78b131ccee200f08a00cc0957b81f
实际代码仍没有回滚。
此时应该执行 git reset HEAD~1
或 git reset HEAD^
将操作回滚到上一步,这样才能将合并记录关联分支的提交记录一并撤销。
Comments