0
点赞
收藏
分享

微信扫一扫

Git必知必会基础(12):远程冲突(conflicts)解决--merge

 

演示场景

虽然每次合并代码前会先把分支更新到最新,但是在你pull后到push前这段时间,可能其它小伙伴又push了,那么你的分支就不是最新的了

在push的时候就会失败,比如遇到这种提示信息:

To gitee.com:qzcsbj/pytest_apiautotest.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'gitee.com:qzcsbj/pytest_apiautotest.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

本篇我们演示这种场景,并用merge解决冲突。

 

数据准备

重新克隆

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支

 

日志

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_02

 

远程分支qzcsbj.txt内容

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_03

 

commit id

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_04

 

其他人提交

模拟其他人对master做了提交:直接gitee上修改文件并提交

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_05

 

新的commit id

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_06

 

本地提交

本地分支修改qzcsbj.txt内容为:

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_07

 

先提交到本地仓库

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_08

 

日志

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_09

 

推送到远程仓库,报错

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_10

 

To gitee.com:qzcsbj/pytest_apiautotest.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'gitee.com:qzcsbj/pytest_apiautotest.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

大概意思是:远程仓库别人推送的内容,我们本地没有,也就是我们本地master不是最新的

 

解决冲突

将远程仓库的master分支下载到本地当前branch中

git fetch origin master

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_11

 

可以查看本地分支和fetch的分支差异:git diff master FETCH_HEAD,我们这里只有qzcsbj.txt的内容有差异

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_12

 

git diff master origin/master

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_13

 

进行合并:git merge origin/master

或者:git merge fetch_head

提示做了自动合并,但是自动合并失败了;另外,下面master -> origin的颜色变了

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_14

 

查看文件内容

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_15

 

合并内容为:

Git必知必会基础(12):远程冲突(conflicts)解决--merge_git_16

 

再次推送

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_17

 

To gitee.com:qzcsbj/pytest_apiautotest.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'gitee.com:qzcsbj/pytest_apiautotest.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

大概意思是:当前分支落后远程分支

问题原因是:刚刚我们已经和远程分支合并了,但是没提交到本地仓库,所以执行下面操作:

git status

git add .

git commit -m "xxx"

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_18

 

git push

Git必知必会基础(12):远程冲突(conflicts)解决--merge_git_19

 

push成功后,远程分支内容

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_20

 

新的commit id

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_21

 

日志:下面c545426是模拟别人提交的id

Git必知必会基础(12):远程冲突(conflicts)解决--merge_git_22

 

查看分支合并图

git log --graph

Git必知必会基础(12):远程冲突(conflicts)解决--merge_git_23

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程仓库_24

 

git log --graph --oneline

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_25

Git必知必会基础(12):远程冲突(conflicts)解决--merge_远程分支_26

 

 

 

__EOF__


本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等


举报

相关推荐

0 条评论