前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >git 使用 tortoisegit 解冲突

git 使用 tortoisegit 解冲突

作者头像
jgrass
发布2024-12-25 16:14:15
发布2024-12-25 16:14:15
29400
代码可运行
举报
文章被收录于专栏:蔻丁杂记蔻丁杂记
运行总次数:0
代码可运行

git 解冲突需要注意的问题

“弄清除冲突双向的修改意图,并在解决冲突时,同时处理两边的意图。”

换句话说,不是为了解决冲突而解决冲突,重点搞清楚冲突如何产生,以及如何合并双方的修改。

举例说明

A.txt 文件,

在 master 分支上,有一行文字(代码)是这样:

代码语言:javascript
代码运行次数:0
运行
复制
这是一段在 master 分支上的文字。

Alice 在 dev 分支上,修改了这段文字(代码),修改后如下:

代码语言:javascript
代码运行次数:0
运行
复制
在 dev 上,将 master 的文字修改为这段文字;并添加了其它文字;如果是代码,这些代码相互关联。

Bob 基于 master 分支开发功能,在 f/feature 分支上,也修改了这段代码,如下:

代码语言:javascript
代码运行次数:0
运行
复制
在一个功能分支(f/feature)上修改 master 上的代码;以及与之相关的其它内容。

现在,Bob 需要把 dev 分支的代码合并到 f/feature 分支上,git 命令:(@f/feature) git merge dev

将得到一个冲突。如何解决这个冲突?

解冲突

解冲突推荐使用 GUI 工具,因为直观。这里介绍 tortoisegit 解冲突的操作。

(图1)操作入口:

(图2)冲突列表:

(图3)文件的解冲突页面

对于比较简单的冲突,直接应用某一边的修改,或者做一下简单的编辑(图3中,下面的区域是可以编辑的。)

对于复杂冲突,需要了解两边对同一段代码的修改意图,即对方(Remote)为什么要这样改,要达到什么目的?本方(Local)为什么要这么改,要达到什么目的?

修改比较复杂是,在图3的界面中,可能看不清具体的修改内容,可以在 tortoisegit 中查看两边修改前后的对比。

(图4)查看两边具体的修改。

下面是一张稍显复杂的两边修改的对比图。

(图5)两边修改对比

通过图5 ,可以具体查看两边的修改意图,具体在解冲突是,可能没办法一次处理完。

这时需要先在临时处理冲突(如应用某一边的修改),并记录下另一边的修改(如保留这个窗口,或者截图。)

在 git 的冲突处理完之后(这里其实只是形式上处理完了,实际上丢弃了某一边的修改),再修改代码。

更复杂的情况,可能两边对代码的改动都非常大,需要代码重构才能解决问题。当然,这个情况很少,也应该避免发生。

补充

如图1和图5所示,其中的 Remote 指被合并过来的分支,这里是在 f/feature 上合并 dev , 则 Remote 指 dev 上的修改,Local 指 f/feature 上的修改。

重点

兼顾两边的修改意图,不能因为解冲突,丢失了某一边的修改。

git GUI 与 tortoisegit

其它

这里有个工具可以查看 git 的差异文件 patch file,不过现在用得很少了

megatops/PatchViewer: Single file, browser based patch file viewer.

原文链接: https://cloud.tencent.com/developer/article/2481459

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年7月17日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git 解冲突需要注意的问题
  • 举例说明
  • 解冲突
  • 补充
  • 重点
  • git GUI 与 tortoisegit
  • 其它
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档