【git】合并分支发生冲突

摘要:
README的内容。md文件如下:Creatinganewbranchisquickandsimple.Evan@Evan-PCMINGW64/F/gitskills(master)$gitcheckout-bfeature1#createabranch'feature1'并切换到子分支'feature2'修改自述文件。md文件如下:创建

README.md 文件内容如下:

Creating a new branch is quick and simple.

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git checkout -b feature1 #create a branch 'feature1' and switch to it
Switched to a new branch 'feature1'

修改README.md文件如下:

Creating a new branch is quick AND simple.

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git add README.md #add new README.md to stage(暂存)
Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git commit -m "commit after add"  #like -m says
[feature1 6392060] commit after add
 1 file changed, 1 insertion(+), 1 deletion(-)
Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git checkout master #switch to branch master
Switched to branch 'master'

修改README.md文件如下:

Creating a new branch is quick & simple.

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git commit -m "commit on branch master"
[master cbbef56] commit on branch master
 1 file changed, 1 insertion(+), 1 deletion(-)
Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git merge feature1 #merge feature1 with master
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

发生冲突

Evan@Evan-PC MINGW64 /f/gitskills (master|MERGING)
$ git checkout feature1
error: you need to resolve your current index first
README.md: needs merge

解决冲突之前,无法切换分支

Evan@Evan-PC MINGW64 /f/gitskills (master|MERGING)
$ git merge feature1
error: Merging is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.

强行merge,还是不允许,提示 fix unmerged files up,并 add ->commit

Evan@Evan-PC MINGW64 /f/gitskills (master|MERGING)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (master|MERGING)
$ git commit -m "direct commit with fix unmerged file"
[master f77dca7] direct commit with fix unmerged file

看看强行 commit 而不去 fix unmerged file 会发生什么

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git merge feature1
Already up to date.

it seems work good

打开文件,文件内容变为如下:

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git checkout feature1
Switched to branch 'feature1'

切换到 branch feature1

打开文件,文件内容如下:

Creating a new branch is quick AND simple.

由此可见,所谓 fix up unmerged file 只是 git 的提醒,根据实际情况修改文件之后重新提交即可解决。

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" to publish your local commits)

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git merge feature1
Already up to date.

再次合并,成功

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git checkout feature1
Switched to branch 'feature1'

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git status
On branch feature1
nothing to commit, working tree clean

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" to publish your local commits)

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" to publish your local commits)
Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git commit -m "commit again on master"
On branch master
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git checkout feature1
Switched to branch 'feature1'

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git commit -m "commit again on feature1"
On branch feature1
nothing to commit, working tree clean

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7 commits.
  (use "git push" to publish your local commits)

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git merge feature1
Already up to date.

即使文件内容依旧不同,分别 add 、commit 却可以merge。

那么,再次修改的话呢?

branch master 下的文件修改后如下:

Creating a new branch is quick && simple.

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git commit -m "edit 2nd"
[master 3970f17] edit 2nd
 1 file changed, 1 insertion(+), 5 deletions(-)

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git merge feature1
Already up to date.

单独修改 master 下的文件可以merge

再修改 feature1 下文件如下:

Creating a new branch is quick &&& simple.

Evan@Evan-PC MINGW64 /f/gitskills (master)
$ git checkout feature1
Switched to branch 'feature1'

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git add README.md

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git commit -m "edit 2nd"
[feature1 7a7f369] edit 2nd
 1 file changed, 1 insertion(+), 1 deletion(-)

Evan@Evan-PC MINGW64 /f/gitskills (feature1)
$ git merge master
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

又修改 feature1 下的文件则merge失败。

结论:

于是,我猜想,一般情况下,当发生merge失败的时候,需要将修改双方分支的冲突文件修改为一致;或者修改并重新 commit master 分支下的冲突文件之后,删除另一分支。

原文地址:廖雪峰的官方网站

免责声明:文章转载自《【git】合并分支发生冲突》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇项目配置中 提示access denied的问题 解决方案Android使用SurfaceView实现墨迹天气的风车效果下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

深入MySQL复制(一)

本文非常详细地介绍MySQL复制相关的内容,包括基本概念、复制原理、如何配置不同类型的复制(传统复制)等等。在此文章之后,还有几篇文章分别介绍GTID复制、半同步复制、实现MySQL的动静分离,以及MySQL 5.7.17引入的革命性功能:组复制(MGR)。 本文是MySQL Replication的基础,但却非常重要。对于MySQL复制,如何搭建它不是重...

解决git 出现 Your account has been blocked问题

使用git 出现 Your account has been blocked 无法从远程pull代码下来, 解决方案如下: $ git push origin masterGitLab: Your account has been blocked.fatal: Could not read from remote repository. git 提交时出现...

【Git】4、创建代码仓库,HTTP、SSH拉取远端代码

拉取远端代码:使用Git命令下载远程仓库到本地 文章目录 拉取远端代码:使用Git命令下载远程仓库到本地 1、创建远程代码仓库 2、创建仓库 3、进入仓库 4、HTTP(S)获取远程仓库 首次拉取 更新代码 临时记住密码 永久记住密码 5、 SSH拉取 拉取代码 创建一个ssh key 添加公钥到服务器 再次拉取代码 更新代码 6、小结 H...

Linux 配置gitee

安装好git后, 如何配置连接至gitee ?首先, 需要在官网注册一个gitee账号, 然后进行以下配置步骤: 1. 设置账号 $ git config --global user.name "your name" 2. 设置邮箱 $ git config --global user.email "your email" 3. 生成密钥 $ ssh-...

K8S部署之kubeadm

K8S部署笔记 一、集群环境说明 主机名 IP地址 说明 k8s-master01 192.168.1.107 master节点 k8s-master02 192.168.1.108 master节点 k8s-master03 192.168.1.109 master节点 k8s-master-lb(在master节点) 192.16...

在vscode中用Git管理项目

一、新建仓库 1、新建仓库-->填写仓库名称-->一定要将对钩去掉-->公开-->创建 Git全局设置: git config --global --add user.name "zhouwenhao"git config --global --add user.email "1141180185@qq.com" 二、推送代码 2、...