【Git】TortoiseGit代码冲突解决方法

这篇具有很好参考价值的文章主要介绍了【Git】TortoiseGit代码冲突解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


场景一:本地相同文件冲突

  • 冲突场景:User1和User2修改、拉取相同文件

User1修改文件C内容,提交并推送,成功;
User2修改文件C内容,拉取,提示合并错误。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

冲突分析:
此时文件状态还未显示冲突,因为本地文件只是修改,并未提交到本地暂存区;而此时从远程拉取的文件已保存在暂存区,但又无法和本地的修改直接合并,所以pull操作被中止。从提示的错误信息:Please commit your changes or stash them before you merge,也可以得知,此时需要先commit(提交)或Stash save(暂存),才能将User1和User2的修改合并。

  • 解决方法:

User2选择文件C,右击选择:Stash save(保存贮藏),将文件C的修改暂存。在Stash save 窗口,可以编辑相应的注释。如下:

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
此时打开文件C,可以看到之前的修改已经隐藏,回到未修改时的状态。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

贮藏修改后,再执行pull操作(即,相当于在未修改本地版本库前进行pull操作),此时 User2本地文件C的版本与User1、服务端均相同,贮藏的内容不会对此次pull的内容产生任 何影响。

User2可以有两个选择:

右键选择一:Pop Stash(弹出贮藏),将之前的贮藏内容弹出,继续合并到当前文件;

提示:
Pop Stash过程中出提示失败,是因为此时文件C的版本和Stash Save时的版本已经不一致(即,Stash进、出时的版本改变),所以需要手动解决冲突。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
点击yes,进入编辑冲突的过程,后续的操作过程参照场景二的解决方法即可。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

右键选择二:

Stash List(贮藏列表),在弹出的对话框进行贮藏内容管理,例如删除贮藏,重新对本地文件进行修改、提交、推送。

场景二:服务端相同文件冲突

  • 冲突场景:User2和User1修改、提交、推送相同文件

User1修改文件B内容,提交并推送,成功;
User2修改文件B内容,提交并推送,提示冲突。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

  • 解决方法:

User2执行pull操作,此时文件B显示冲突状态;打开文件B如下:

说明:
<<<<<<<HEAD 与 =======			之间的是user2本地修改的内容
=======>>>>>>>(哈希值-1)	之间的是user1已经更新到服务器的内容

手动解决冲突文件,可以使用两种方法:

方法1:
直接修改文件B,删除标识符,保留所需内容(此方法只适合修改内容较少的 情况下)。修改后如下:
tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
方法2:
使用TortoiseGitMerge工具,打开方法:右击文件,选择“Edit Conflict(编辑冲突)”。 此时,自动生成文件B的三个版本,并且对应显示在工具窗口。编辑完内容后, 选择文件另存并覆盖冲突文件B。关闭窗口后,其他三个文件自动消失。
tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

说明:文件B的三个不同版本
BASE.txt文件:	B文件对应User1、User2、服务端共同的历史版本;
LOCAL.txt文件:	B文件对应User2本地修改的版本;
REMOTE.txt文件:	B文件对应User1提交更新的版本(也是当前服务端的版本)。

冲突文件修改完成后,文件仍然显示冲突状态。再次右击文件,选择“Resolve…(解决冲突)”。正常弹出如下界面,确定即可。
tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

注意:
如果此时提示如下界面,是因为当前TortoiseGit与GitBash软件版本不兼容,将TortoiseGit更新为最新版即可。
tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

解决完冲突后,如下。User2可正常执行commit、push操作,服务端将更新User1和User2的修改。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

场景三:服务端不同文件冲突

  • 冲突场景:User2和User1修改、提交、推送不同文件

User1修改文件A内容,提交并推送,成功;
User2修改文件B内容,提交并推送,提示冲突。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

  • 解决方法:

User2执行pull操作,勾选“No Fast Forward”,拉取服务器文件A;
User2再执行push操作,A、B文件均更新到服务器。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

场景四:服务端文件名冲突

  • 冲突场景:User2和User1重命名同一文件

User1重命名文件A为A-1,提交并推送,成功;
User2重命名文件A为A-2,提交并推送,提示冲突。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

  • 解决方法:

User2执行pull操作,此时文件A-1和A-2显示冲突状态。

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
在上述窗口点击resolve(解决);或者右键本地冲突文件,选择“Edit Conflict(编辑冲突)”,进入文件冲突编辑窗口。

说明:文件A的三个命名版本
A-1.txt文件:	User1已更新到服务端的文件名;
A-2.txt文件:	User2本地修改的文件名;
A.txt文件:		User1、User2、服务端的历史文件名;

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
根据需要保留相应的文件名,例如:只保留A-2文件,依次右键文件A-1和文件A,选择“Edit conflict(编辑冲突)”,执行删除文件,如下:

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
对于A-2文件,选择“Edit conflict(编辑冲突)”后,执行Create(创建)文件,如下:

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
创建文件A-2后,冲突文件列表显示为空,文件A-2的状态将恢复为已提交状态,如下:

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发
此时,User需要先执行commit操作,再执行push操作,如下:

tortoisegit 编辑解决冲突,Git,git,github,源代码管理,软件工程,个人开发

提示:
此时文件A-2显示已提交状态,是因为文件在冲突之前已经被提交到暂存区;但仍然不能直接执行push操作,是因为在解决冲突过程中,原来在本地暂存区的历史文件A和从远程pull到本地暂存区的文件A-1已经被删除,所以需要先将这两个文件的更新重新提交。


小结

TortoiseGit可视化界面,很好的解决了用户习惯在Windows系统环境下使用界面操作进行Git版本库管理的问题,而且文件状态实时同步也是一大便捷之处。文章来源地址https://www.toymoban.com/news/detail-806873.html

到了这里,关于【Git】TortoiseGit代码冲突解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TortoiseGit 图标不显示问题解决方法

    如下图所示,如果文件夹左下角的文件状态不显示的话,如何解决? 1.window+r 打开命令框,输入regedit打开注册表 2.复制如下内容,快速定位到指定位置 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellIconOverlayIdentifiers 3. 所有tortoisegit的文件前面加空格,让它们在最前

    2024年02月11日
    浏览(45)
  • win10 TortoiseGit 图标不显示的解决方法

    通过win+r快捷键,打开“运行”,输入regedit,打开注册表 注册表中,定位到以下路径: 计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellIconOverlayIdentifiers 在路径中,可以看到TortoiseGit的名称前,包含别的注册表项。如果TortoiseGit的名称排列顺序在后,则会导致

    2024年02月12日
    浏览(40)
  • 关于【Git】push失败与使用小乌龟(TortoiseGit)时的一些报错解决方案

    原因.小乌龟没有设置git路径,解决如下 将红框标注的地址改为自己的git安装地址即可。 原因是设置了全局代理没有清除 如果依然出现该错误 重新push即可。 一些刚学习vs的用户们可能会不熟悉界面,打开了一些不该打开的应用,vs自带的git即使如此,他会和自身安装的GIt与

    2024年02月08日
    浏览(63)
  • 解决TortoiseGit软件Git Show log时显示Too many files to display的问题

    有时代码提交修改的文件比较多,当查看log时无法显示出来修改的文件列表,如下所示: 将LogTooManyItemsThreshold尽可能配置得大一些。 https://gitlab.com/tortoisegit/tortoisegit/-/issues/3878

    2024年04月12日
    浏览(39)
  • git代码合并、git解决冲突的方法?

    Git是一种分布式版本控制系统,它提供了多种方法来合并代码和解决冲突。下面是两个常见的场景以及对应的操作步骤: 合并分支 当我们在一个项目中有多个分支时,需要将不同分支中的代码合并到一起。假设我们有一个主分支master和一个开发分支dev,现在需要将dev分支合

    2024年02月02日
    浏览(53)
  • 【Git】Windows Git和TortoiseGit安装教程(Git2.23.0、TortoiseGit2.8.0、语言包2.8.0)

    介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,

    2024年02月15日
    浏览(44)
  • Git&TortoiseGit安装和配置

    前言: 日常开发提交代码的过程中,Git工具是必不可少的,有些小伙伴喜欢可视化界面,TortoiseGit工具就是不二之选了。下面提供纯Git配置和Git+TortoiseGit两种方式。 下载:Git官网 下载安装完成后,在开始菜单或者桌面右击找到“Git Bash”,进行git的前置配置。 在Git Bash界面输

    2024年02月06日
    浏览(50)
  • 一、Git安装(Git+TortoiseGit图形化)

    Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

    2024年02月05日
    浏览(43)
  • Windows + Git + TortoiseGit + Github

    一、下载Git (Git For Windows)     1.1. Git下载地址:https://gitforwindows.org/     1.2. 默认安装即可(包名:Git-2.42.0.2-64-bit.exe) 二、下载TortoiseGit     2.1.TortoiseGit下载地址:http://tortoisegit.org/download/     2.2.可以不用下载安装语言包,直接用英文即可(TortoiseGit-LanguagePack-2.14.0.0-

    2024年02月07日
    浏览(40)
  • TortoiseGit和Git密钥配置图文教程

    Key值生成中 Key值生成成功 3. 【Key区域】 中【Public key for pasting into OpenSSH authorized_keys file:】多行文本的字符串就是公钥,可以将该公钥配置到码云、GitLab、Github等代码托管网站或服务器上(一般代码托管网站配置SSH公钥都在个人设置(Settings)中,找到SSH,将当前获得

    2024年04月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包