美文网首页
git 处理冲突

git 处理冲突

作者: 苍老师的眼泪 | 来源:发表于2022-08-01 00:31 被阅读0次

    1. 提交时发现冲突

    情形:甲和乙共同开发一个项目,原本甲开发A功能,乙开发B功能,互不干扰。然而其中一个配置文件是A和B功能都依赖的。有一天乙修改了这个配置文件,比如多加了B功能需要的参数,然后提交了他的修改。刚好此时甲也因为A功能需要编辑这个配置文件,于是甲在不知道乙修改了配置文件的情况下他也修改了配置文件(如果甲知道乙修改了这个配置文件的话,他可以等乙保存并push上远程仓库后他再 pull 下来,这样就不会引起后面的冲突了)。甲在修改了配置文件后很开心的想要提交后下班了,此时他发现提交时出现了一个错误提示,吓得他顿时菊花一紧!,错误提示为:

    To http://xxx.xxx.xxx/group_name/project_name.git
     ! [rejected]        main -> main (fetch first)
    error: failed to push some refs to 'http://xxx.xxx.xxx/group_name/project_name.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.
    

    意思是提交被拒绝了,因为远程仓库上的修改了某个文件,而甲也修改了某个文件并且想要提交这个文件,于是就冲突了!

    解决方法:按照提示,先执行 git pull 将远程仓库的更新拉下来,并修改冲突的文件。
    于是甲便乖乖地 pull 下来,发现乙修改了配置文件也不跟他说一声,导致冲突,最后甲不得不接收乙对配置文件的修改(意味着暂时要放弃自己对配置文件的修改):

    git checkout --theirs .
    

    这里补充一下合并冲突的命令

    用的是 git checkout 命令,但是需要指定参数
    --ours:舍弃它们的,使用我们的修改
    --theirs:舍弃我们的,使用它们的修改
    
    例如:
    对于 main.py 这个文件,使用它们的修改,放弃我们的修改
    git checkout --theirs main.py
    
    全部使用它们的修改
    git checkout --theirs .
    

    因为他之前肯定是提交了再 push 然后发现提交不了的,所以此时他要再执行:

    git add .
    git commit -m "accept conf change for B and featureB"
    

    最后再修改配置文件添加自己的配置,最后再提交并push
    最终远程仓库会多出一条因为甲处理冲突而产生的历史版本记录:accept conf change for B and featureB

    2. 合并冲突发现冲突

    甲在A分支改了某个文件并提交了,乙在B分支改了相同的文件并提交了,甲想要合并乙的工作,此时发现冲突了
    解决方法:跟上面一样。。。

    相关文章

      网友评论

          本文标题:git 处理冲突

          本文链接:https://www.haomeiwen.com/subject/hlwaprtx.html