Git(四) Git冲突处理

本文深入讲解Git冲突产生的原因及处理方法,包括理解冲突标记、解决冲突的三种策略,以及推荐的分支工作流程。

Git(四) Git冲突处理


上篇文章主要说到Git的图形化管理工具 SourceTree的基本操作, 本篇文章接着上篇内容继续为大家介绍 Git的使用中冲突处理。

你好,【程序职场】专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率,从技术到管理一步步提升自我!
 
标签:一个执着的职场程序员!

前言

一,冲突是如何产生的?

二,如何处理冲突

三,总结

一,冲突是如何产生的?


在项目开发中,往往是多个人一起协作开发一个项目,由于多个人同时修改了一个文件,当一个人修改一个文件后提交Git服务器,如果其他开发人员也修改了该文件, 在拉取项目的时候会提示 本地和Git服务器同时修改了一个文件而冲突。

1,模拟冲突,

用户A修改了文件 README.md 修改内容是 把 “调整信息,”修改成 “冲突第一次提交”,如下图:

(1),修改文件提交服务器

 

(2),查看github服务器 信息已经修改,如下图:

 

 

用户B也修改了改文件 并且信息调整为  “调整信息,验”

当用户B更新Git服务器代码时会提示 有冲突需要解决,如下图:

在这种情况下,我们会发现,同时修改的文件 由 三个点的形状变成 感叹号的形状了,并且点击冲突的文件后,发现里面有冲突的信息,并且有错误提示的关键字

 

二,如何处理冲突

上面我们说到 产生冲突的时候 冲突文件会在本地的文件中存在 冲突标记 ,我们需要在本地打开冲突的文件,如下图:

那么我们怎么解决这些冲突呢?

首先我们需要了解一下 冲突标记,冲突标志内容分为 本地自己的更改 和 服务器的更改。

<<<<<<< HEAD  到 ======= 里面的  “调整信息,验” 是我们自己本地的commit的内容

=======到 >>>>>>>的是您下拉的内容  “冲突第一次提交”

了解了冲突的标记,我们就知道怎么来做解决冲突了,下面有三种情况我们根据自己需要调整。
1,保留自己代码(删除服务器更新的)
删除:
<<<<<<< HEAD

=======
冲突第一次提交
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

保留:
调整信息,验

2,保留服务器代码(删除自己本地调整的)

删除:

<<<<<<< HEAD
调整信息,验
=======

>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

 

保留:

冲突第一次提交

3,合并代码(保留自己本地和服务器更新的)

删除:

<<<<<<< HEAD

=======

>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2

保留:

调整信息,验

冲突第一次提交
 

ok,我们根据自己的需求调整好之后 就要进行下一步了,这里我演示的时候选择保留 自己修改和服务器更新的所有信息(合并代码)

如下图,
一,我删除掉冲突标记,保留所有内容后的效果:

 

二,在已缓存文件中右击冲突文件,选择  解决冲突---》标记为已解决

 

三,经过第二步操作后,会提示拉取和提交都有需要提交信息,这时候如果你选择拉取 会提示你  先提交本地修改,按照提示提交你本地的提交文件后,界面变成如下图:
 

到这里 冲突已经解决了,你直接做  推送  到github服务器操作就行。

到此冲突解决,是不是很简单,主要是要明白怎么出现的 ,才能明确的解决。

 

三,总结

这节我们主要讲了Git的冲突解决,冲突很常见,也是小伙伴很苦恼的问题,因为处理不好会导致来回回滚和分支恢复,遇到冲突我们首先不要慌,要按照我们自己清晰的理解,一步一步的去处理,要注意看提示,注意留备份。

所以在开发中我强烈建议小伙伴们 通过打分支的方式来开发和提交,合并,可以选择 三种分支方式  master,feature,dev ,我们可以在dev分支开发,最后确认无误后,在合并到master提交到服务器  保证最后合并提交始终是最正确的代码。

 

OK,本文我们就先说到这里,有问题欢迎留言讨论。下一篇我们说一下:Git分支管理。Git的分支管理非常强大,基本可以解决所有的版本开发情况。

 

### Git解决代码冲突的最佳实践 在团队协作开发过程中,代码冲突是一个常见的问题。以下是关于如何高效解决 Git 代码冲突的最佳实践: #### 手动解决合并冲突 当执行 `git merge` 或 `git rebase` 命令时,如果多个开发者在同一文件的同一位置进行了修改,则可能会发生冲突Git 会在这些文件中标记出具体的冲突区域,并暂停当前的操作以便手动解决问题[^1]。 冲突标记通常如下所示: ```text <<<<<<< HEAD 本地更改的内容 ======= 远程更改的内容 >>>>>>> 主分支名称 ``` 要解决此类冲突,需编辑冲突文件并移除冲突标记,保留所需的代码逻辑。完成编辑后,通过以下命令提交解决方案: ```bash git add 文件名 git commit -m "解决冲突" ``` #### 预防未跟踪文件覆盖错误 有时,在运行 `git pull` 更新代码时,会出现类似于 “The following untracked working tree files would be overwritten by merge”的提示。这表明存在一些工作目录中的未跟踪文件可能被合并操作覆盖。为了避免这种情况,可以通过清理不必要的未跟踪文件来预防此问题,或者使用 `-X theirs` 参数强制接受远程版本[^2]: ```bash git clean -fd git pull origin 主分支名称 -X theirs ``` #### 使用工具辅助解决复杂冲突 对于较为复杂的冲突场景,推荐借助图形化工具或专用的合并工具(如 VS Code、Sourcetree、Meld 等)。这类工具有助于直观地比较差异并快速做出决策[^3]。 #### 自动化流程与最佳实践建议 为了减少人为因素导致的冲突频率,应遵循一定的编码规范和分支管理策略。例如定期同步最新主干代码至个人功能分支上;保持提交粒度细小且描述清晰等良好习惯均有助于提升整体效率。 ```python def example_function(): """演示函数""" pass ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默的闪客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值