0%

Git主分支有更改后如何合并提交

公司里的项目部署在私有的GitLab站点上,项目的 master 分支不能直接进行 git push 操作,只能通过将其他分支合并到 master 分支来上线新功能。

比如我基于 master 分支创建了一个名为 dev-1130 的分支做功能开发。当功能开发完成后需要合并到 master 分支,却发现 master 分支上已经有同事提交了自己的分支,提示有代码合并冲突,不能自动合并。

那么这种情况下该如何合并当前的分支呢?

其实解决方法有很多,下面说一种。其他的方法后续补充。


相关

2019-10-21 更新:


分之合并法

查看当前分支状态
1
2
3
➜ git status
On branch dev-1130
nothing to commit, working tree clean
拉取当前分支最新代码
1
2
➜ git pull origin dev-1130:dev-1130
Already up to date.
切换到master分支
1
2
3
➜ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
拉取master分支最新代码
1
2
➜ git pull origin master:master
Already up to date.
手动合并dev-1130到master分支
1
2
3
4
➜ git merge dev-1130
Auto-merging hello_world/hello.py
CONFLICT (content): Merge conflict in hello_world/hello.py
Automatic merge failed; fix conflicts and then commit the result.
提示代码冲突,手动解决
提交更改
1
2
3
4
➜ git add .

➜ git commit -m "解决冲突"
[master 9c7471f] 解决冲突
查看当前分支状态
1
2
3
4
➜ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
(use "git push" to publish your local commits)
将当前master分支提交到远端的dev-1130分支

注意这里,是将本地我们解决冲突合并之后的 master 分支代码提交到远端的 dev-1130 分支上。

1
2
3
4
5
6
7
8
➜ git push origin master:dev-1130
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 548 bytes | 548.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
To mycompany_gitlab:Leafney/hello_world.git
49c7684..9c7471f master -> dev-1130
拉取远端的dev-1130分支到本地的dev-1130分支
1
2
3
4
➜ git pull origin dev-1130:dev-1130
From mycompany_gitlab:Leafney/hello_world
49c7684..9c7471f dev-1130 -> dev-1130
Already up to date.

至此,操作完毕。


如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc