Git教程-解决冲突

人生不如意之事十之八九,合并分支往往也不是一帆风顺的。

准备新的feature1分支,继续我们的新分支开发:

$ git checkout -b feature1
Switched to a new branch ‘feature1‘

修改readme.txt最后一行,改为:

Creating a new branch is quick AND simple.

feature1分支上提交:

$ git add readme.txt
$ git commit -m "AND simple"
[feature1 75a857c] AND simple
 1 file changed, 1 insertion(+), 1 deletion(-)

切换到master分支:

$ git checkout master
Switched to branch ‘master‘
Your branch is ahead of ‘origin/master‘ by 1 commit.

Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

master分支上把readme.txt文件的最后一行改为:

Creating a new branch is quick & simple.

提交:

$ git add readme.txt
$ git commit -m "& simple"
[master 400b400] & simple
 1 file changed, 1 insertion(+), 1 deletion(-)

现在,master分支和feature1分支各自都分别有新的提交,变成了这样:

这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:

$ git merge feature1
Auto-merging readme.txt
CONFLICT (content): Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result.

果然冲突了!Git告诉我们,readme.txt文件存在冲突,必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件:

$ git status
# On branch master
# Your branch is ahead of ‘origin/master‘ by 2 commits.
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:      readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

我们可以直接查看readme.txt的内容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存:

Creating a new branch is quick and simple.

再提交:

$ git add readme.txt
$ git commit -m "conflict fixed"
[master 59bc1cb] conflict fixed

现在,master分支和feature1分支变成了下图所示:

用带参数的git log也可以看到分支的合并情况:

$ git log --graph --pretty=oneline --abbrev-commit
*   59bc1cb conflict fixed
|| * 75a857c AND simple
* | 400b400 & simple
|/
* fec145a branch test
...

现在,删除feature1分支:

$ git branch -d feature1
Deleted branch feature1 (was 75a857c).

工作完成。

小结

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

git log --graph命令可以看到分支合并图。

时间: 2024-10-28 16:27:53

Git教程-解决冲突的相关文章

git之解决冲突

前面几次使用git,一直对于冲突的这个问题不是很理解,感觉有些时候就会产生冲突,在此记录一下解决冲突的流程 1.git bash上面冲突显示 2.在idea上面可以看到冲突的文件 3.去解决冲突 4.采取冲突的合并的办法,对于不冲突的文件,我们进行合并,但是对于有冲突的,我们选择一个 进行合并 二.关于git的小知识点 1.git checkout pom.xml,当我们对pom里面的文件进行了修改,这个可以可以不提交,直接可以回滚到我们初到这个分支 2.随时编写的时候,注意自己的分支问题 3.

git如何解决冲突(代码托管在coding)

分支A提交合并请求到分支B,有冲突 git fetch code 拉取远程仓库的其他分支代码(我拉代码是remote add code所以这里是code,可以用git remote查看) git checkout 分支A 切换到分支A git pull code 分支A 拉取分支A代码 git checkout 分支B 切换到分支B git pull code 分支B 拉取分支B代码 git merge --no-ff 分支A 将分支A合并到分支B git status 查看冲突代码 eclip

git学习(十一) idea git pull 解决冲突

测试如下: 先将远程的代码修改,之后更新: 之后将工作区修改的代码(这里修改的代码跟远程修改的位置一样)提交到本地,之后拉取远程的代码,会发现有冲突: Accept Yours 就是直接选取本地的代码,覆盖掉远程仓库的 Accept Theirs 是直接选取远程仓库的,覆盖掉自己本地的 选择Merge,自己手动行进选择.修改,之后会弹出类似下面这个框: 这里左边部分本地仓库的代码,右边部分是远程仓库的代码,中间的result就是修改之后的结果.左下角的Accept Left 和Accept Ri

git -- 如何解决冲突

遇到冲突,首先要编辑冲突文件,可以使用vim或者其他工具,冲突文件变现为: <<<<HEAD 到 ==== :代表本地分支的修改内容 ==== 到 >>>>分支名:代表要合并的分支做的修改 编辑冲突文件删去多余的标志内容,保存退出即可,然后: gitk -all  --> git add . --> git commit -m "chongtu" --> git merge

在使用svn或者git时解决冲突后打不开工程文件的解决方法

因为.xcodeproj工程文件冲突了,然后还是会强制更新,内部文件出现了冲突,所以解析不了文件.解决方法如下: 1. 右键点击.xcodeproj,选择显示包内容: 2. 双击打开project.pbxproj文件: 3. 找到类似如下的冲突信息(可用command + f 搜索) 工程文件打不开, cannot be opened because the project&n" title="Xcode 工程文件打不开, cannot be opened because th

解决冲突-git入门教程

人生不如意之事十之八九,合并分支往往也不是一帆风顺的. 准备新的feature1分支,继续我们的新分支开发: $ git checkout -b feature1 Switched to a new branch 'feature1' 修改readme.txt最后一行,改为: Creating a new branch is quick AND simple. 在feature1分支上提交: $ git add readme.txt $ git commit -m "AND simple&quo

git 解决冲突

$ git push origin master To /home/fan/repo/code/../a.git/ ! [rejected] master -> master (fetch first) push失败,版本落后,提示要fetch $ git fetch origin $ git merge origin/master Auto-merging a.txt CONFLICT (content): Merge conflict in a.txt 发生冲突 选择修改,解决冲突 git

Git 分支管理和冲突解决

创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在master分支上创建分支newname分支并检出到该分支. 合并分支间的修改 Merge 合并操作将两条或多条分支合并到一

四、git学习之——分支管理、解决冲突

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN! 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险. 现在有了分支,就不用怕了.你