当前位置:   article > 正文

5. Git进阶之冲突与合并_git如果有冲突怎样手动合并

git如果有冲突怎样手动合并

# 合并的原则

在本地修改项目,远程也被其他人进行了修改后,本地版本库与远程存在冲突。需要进行冲突的解决,才能进行推送。

原则就是:将远程最新的代码拉取到本地,在本地进行合并和冲突解决,随后再push到远程。

方式有多种,本质上一样。

  1. git pull + git push
  2. git fetch + git merge + git push
  3. git fetch + git rebase + git push
  4. git reset --hard origin/branch + git cherry-pick [commid-id] + git push

image-20220314114629632

1. 本地提交

在参与到一个项目中,先用git clone克隆到本地,随后进行一系列修改后commit到版本库

image-20220228171652239

此时会生成一个commit id。

2. 远程更新

在自己push之前,有其他开发者先进行了push,导致远程仓库的内容更新

image-20220228172301553

此时进行push,如果远程最新的代码code_new与我们的commit=ff9b675有地方冲突的话,push就会失败报错。

也就是上面我们遇到的情况。

3. 合并方式

假设直接进行push会有冲突导致push失败,那么需要将自己的本地仓库更新成最新的远程仓库的内容,再进行push。

可以使用

git reset --hard origin/branch
  • 1

回退到最新的远程分支仓库版本,然后再使用

git cherry-pick [commit-id]
  • 1

将自己的commit与最新的代码合并。

image-20220228174434528

此时会出现冲突,同时状态会变成CHERRY-PICKING

合并方式有很多,直接使用git pull拉取并合并最新的代码

或者使用git fetch拉去远程代码到本地仓库(不会更改本地的内容),再使用git merge或者git rebase进行合并,随后再解决冲突。

4. 远程推送

git cherry-pick后,手动解决冲突,然后再git add到我们的commit中,随后执行git cherry-pick --continue继续合并。

最后执行

git push origin 本地源:远程目标
  • 1

image-20220228180155186

如此便可以成功推送到远程。

附其他流程:

image-20220314114723860

image-20220314114754381

image-20220314114812921

5. 冲突解决

在commit之后,先使用git pull,发现Auto-merge failed

于是先回退到原先还没修改的时候:

git reset --hard origin/base_3024
  • 1

这句命令的作用是将工作区、暂存区和版本库都回退到远程仓库origin 的base_3024分支上

然后再执行

git cherry-pick ff9b675b #ff9b675是之前本地修改后commit的id 
  • 1

在执行完git reset --hard后,git log就看不到自己之前的commit信息了,因此需要先记住commit id

git cherry-pick后将commit合并,这个时候发生了冲突,没办法自动合并,因此需要手动解决冲突。

合并后出现的冲突,会以这种形式出现:

分为上下两段:

<<<<<<< HEAD的是pull下来的代码(最新远程的)

>>>>>>> commig-id的是本地修改的代码

回到code,全搜"<<<<<<",出现

双击进去查看冲突

不一致导致的冲突,需要手动修改。

保留想要的更改,删掉多余的信息。

将所有的冲突处解决。

修改完后回到git bash

直接使用git cherry-pick --continue,会存在未解决的冲突。

由于现在的状态在CHERRY-PICKING,本次的commit与最新的代码有冲突,需要把冲突的文件使用git add添加到这次的commit中。

git add [冲突的文件]
  • 1

随后再执行

git cherry-pick --continue
  • 1

合并成功

再使用git push推送到远程。

出现SUCCESS则表示push成功。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/704059
推荐阅读
相关标签
  

闽ICP备14008679号