git 解决冲突 —— git commit 之后使用 TortoiseGit 编辑冲突文件

开发项目时如果多人同时修改到同一个文件,将导致远程代码仓中的修改和本地的修改相冲突,此时拉取远程代码仓将无法自动合并,需要手动去解决。如果本地的修改还没有 commitstash ,将会提示新进行 commitstash操作,来保存本地的修改,避免被远程仓库的修改所覆盖。
此时可以在 git commit 之前解决冲突, 或 git commit之后解决冲突。

git commit 之后解决冲突,可以避免对冲突文件的手动备份操作,但是会多一个合并的 Merge提交,在此整理 git commit之后使用 TortoiseGit 解决冲突的具体方法如下。

1、操作分支的现状

远程仓库:\(A ---> B\)
本地仓库:\(A ---> C\)

远程仓库和本地仓库的对应分支上有共同的提交 A ,远程仓库上的提交 B 和本地仓库的提交 C修改了同一文件,导致无法直接合并。

2、拉取并解决冲突

1)、对本地的代码仓进行 git pull 操作

git pull 将提示自动合并失败,如下图提示对应的文件合并冲突:

对应的本地代码仓和冲突的文件都会出现感叹号的标签,如下图所示

2)、 查看冲突文件

此时可以单独对每个冲突文件进行 Edit conflicts, 或者直接如下图所示对整个本地代码仓进行 Resolve操作。

将会弹出所有的冲突文件列表,冲突文件显示为红色,如下图所示。双击列表中的文件,或右键文件选择 Edit conflicts来对冲突进行手动处理。

3)、解决冲突

在编辑冲突界面,左侧MERGE_HEAD为远程仓库的内容,右侧 HEAD为当前本地仓库中的内容,最下面Merged为合并后的最终内容,如下图

根据需要可以选择

  • 左边或右边的内容作为合并的结果,也可以按照从左到右,或从右到左来进行合并结果,这些操作是以当前光标所在行,或选中行作为操作基础的。
  • 可以直接Copy对应的内容放在合并的文件中,来作为最终的合并结果。

【注意】

  • 一般操作时,左边的MERGE_HEAD为远程仓库内容,需要进行保留,然后将右边本地仓库修改的内容添加到合适的位置。
  • 编辑合并文件结束之后,保存时要选择 Mark as resolved,以标记该冲突文件已被解决。
  • 然后继续对列表中其它冲突文件做同样的合并操作,直到所有冲突文件全部被修复。

4)、提交合并内容

修复完冲突之后,需要将合并的内容作为一个新的提交,进行commit,并git push到远程代码仓。


注意事项

  1. 冲突的文件显示中,红色的部分表示远程仓库和本地仓库中此次编辑的内容。需要解决红色标识的内容。
  2. 合并解决后需要最终的文件中所有的 ???? 行都被编辑修改掉
posted @ 2024-11-05 19:19  Jeffxue  阅读(42)  评论(0编辑  收藏  举报