• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

git merge冲突处理实战

软件和平台 wqsj 3年前 (2022-02-03) 733次浏览 0个评论

不论是git初学者,还是有经验的git用户,人为创建一个git合并冲突,并学习处理过程 ,能让你在今后碰到问题时有更自信的思考。人狠话不多,我就开始了:

初始化本地项目test

mkdir test
cd test
git init
nano test.txt
git add .
git commit -m "initial commit"

上面的test.txt,我们只写三行:

line1
line2
line3

然后创建一个分支b1

git checkout -b b1
nano test.txt
git add test.txt
git commit -m "add line4"

在b1的第一次改变中,我们只加了一行line 4 by b1,然后commit

然后我们回到主分支,把第三行改为 new line3 by master

git checkout master
nano test.txt
git add test.txt
git commit -m "change line3 to new"

到这里,我们已经有了两个分支的更改和提交,先来实验一下git merge,此时会报冲突,冲突的原因是 line3 究竟是要用master改过的,还是要用 b1上保留的,git系统拿不定主意了,这就要开发者做决定,此时可以打开test.txt,发现已经变成:

line1
line2
<<<<<<>>>>>> b1

其中,<<<<<<>>>>>> b1 之间是要合并过业的b1分支和本分支冲突的地方,可以手动选择用哪个版本,然后再提交。如果不想合并,可以用git merge –abort回退到合并前的状态。同样地,用git rebase b1也会有冲突要手动解决,用git rebase –abort放弃合并。

下面再测试一下,如果没有冲突, git merge会发生什么。首先把master回退到上一版本,即还没有对 lin3更改的版本。

git reset --hard HEAD^
nano test.txt
git add test.txt
git commit -m "insert a line after line1"

上面编辑test.txt文件时,在第一行和第二行之间,添加一个insert a line这一句。

先试试git merge b1, 这条合并命令后的 git log和git reflog是什么
可以发现,git merge会把b1的提交记录也合并过来,并生成一个merge的提交记录,


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:git merge冲突处理实战
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址