Git之本地和远端同步修改,开始初步冲突处理

0 views

1 冲突(conflict)起因

在Git中,不同分支合并到同一分支是很常见的操作,在不同的分支操作上,我们可能是修改了同一文件的不同行的地方,或者是不同的文件,这样的操作对分支的合并是影响不大的,两个分支也就比较容易合并。但是,当不同的开发者对同一文件的同一行进行不同更改时,或者一个开发者编辑文件而另一个开发者却删除了这个文件时,合并分支时就会发生冲突,这时候就必须先解决冲突s,然后才能合并分支。这同样适用于Github或者Gitlab的Merge Request(MR)操作,即开发者发起MR时,需要把所有冲突解决完时,MR才能合并成功。

  • 冲突1:对同一文件的同一行进行不同更改:

冲突1

  • 冲突2:一个开发者编辑文件而另一个开发者却删除了这个文件:

冲突2

2 解决冲突方式

方式:你必须在命令行GitHub等托管服务器上手动选择你想要保留的代码,去掉冲突中不想要的代码,从而解决冲突。

  • 对于上述所说的两种冲突类型均可以通过命令行的方式去解决。
  • 对于简单的冲突1类型也可以直接在Github托管服务器上解决。

3 解决冲突具体方法和流程

3.1 本地命令行方式解决冲突

# 第一步:合并分支时发生了冲突(conflict)
# 第二步:查看当前冲突情况
$ git status
# On branch branch-b
# You have unmerged paths.
	#   (fix conflicts and run "git commit")
	#
	# Unmerged paths:
	#   (use "git add ..." to mark resolution)
	#
	# both modified:      test_conflict.txt
	#
no changes added to commit (use "git add" and/or "git commit -a")
# 第三步:打开冲突的文件,并进行修改,保留你想要的内容
# 通过搜索冲突标记符号<<<<<<<,可以快速定位冲突位置
# <<<<<<< HEAD  到 =======标记符号之间为一个分支修改内容
# ======= 到 >>>>>>>为另一个分支修改内容
# 保留你想要保留的内容,然后删除所有的标记符号
# 第四步:修改完冲突文件后,将修改文件添加到仓库跟踪中
$ git add -A
# 第五步:解决完冲突,提交内容
$ git commit -m "Resolved merge conflict."
# 第六步:合并分支
# 第七步:推送到远端仓库,然后在远端仓库,如Github发起Merge pull request.

3.2 Github上直接解决简单冲突

第一步: Github上已经存在待合并的两个分支

第二步: 点击“New pull request”

点击New pull request

第三步: 创建pull request,即点击“Create pull request”,标题和提交信息可以自定义

Create pull request

第四步: 点击“Resolve conflicts”按钮

Resolve conflicts

第五步: 开始修改冲突,保留你想要的内容

修改冲突

第六步: 解决完冲突,点击“Mark as resolved”,标记已解决该冲突

Mark as resolved

第七步: 点击“Commit merge”,提交合并

Commit merge

第八步: 重新发起Merge pull request,点击“Merge pull request”

Merge pull request

第九步: 确认合并分支,点击“Confirm merge”

Confirm merge

第十步:分支合并完成,选择是否要删除已经合并掉的分支

分支合并完成

PREVIOUSvimdiff和git diff
NEXTGit之tag及tag操作