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-08 20:04:25

git学习 八 冲突解决的相关文章

Git下的冲突解决

冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动merge,repo sync会自动rebase,所以git pull和repo sync也会产生冲突.当然git rebase就更不用说了. 冲突的类型 逻辑冲突 git自动处理(合并/应用补丁)成功,但是逻辑上是有问题的. 比如另外一个人修改了文件名,但我还使用老的文件名,这种情况下自动处理是能成

Git分支合并冲突解决(续)

接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时,分支处于 无分支 状态,创建并切换到新分支(git checkout -b conflict),从而解决HEAD游离状态: (2)放弃此次rebase操作(git rebase --abort): (3)在dev分支上merge新分支,出现冲突(git merge conflict): (4)冲突修

?git?-----协同开发,冲突解决 合并分支(项目中使用git)

使用基本流程 """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3.将开发结果提交到本地版本库 - git status查看时没有待处理的事件 4.拉取远程仓库(每一次要提交远程仓库前必须先拉) 5.如果出现冲突,线下沟通(协商重新开发冲突文件),要重新走3.4步 6.没有冲突,提交到远程仓库 """ 协同开发 """ 1)所有人在一个分支上进行开发 - 通常开发分支名为dev 2)遵循git开发流程:先提交本

Git 分支管理和冲突解决

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

git切换分支冲突解决-删除分支

在项目开发中,有多个版本分支需要不时的来回切换,在切换的过程中,产生了很多冲突,提交的时候 也提交不了.总结下在解决这个过程中使用的两种方法: 1.删除项目在磁盘的目录,包括 git 文件,重新 clone 一遍,保存到本地,然后导入到开发工具中. 2.本地目录下分支多,切换时产生冲突,切换到一个没有问题或不再使用的分支.然后删除有问题的分支, 再checkout 一遍对应的分支,即可. 删除分支的命令为:  删除本地分支: git branch -d devexception 强制删除,git

git分支管理与冲突解决(转载)

Git 分支管理和冲突解决 原文:http://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支,名叫newname. git checkout newname 检出分支,即切换到名叫newname的分支. git checkout –b newname master 这个命令将上面两个命令合并:在

git 分之合并和冲突解决

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

Git学习系列总结及博客全目录

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45849615 Git是一个分布式版本控制软件,它是由Linux的作者Linus用C写的一个分布式版本控制系统. Git主要特点 1.速度:Git在本地上保存着所有当前项目的版本和更新,并且Git中的绝大多数操作都在本地,无需连网,所以处理起来速度. 2.简单的设计:Git的实现与项目复杂度无关,它永远可以在几毫秒的时间内完成分支的创建和切换. 3.完全分布式模式:每个人电脑上都有一个完整

dev和master合并冲突解决

git add总结 · git add -A 提交所有变化 · git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new) · git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件 克隆远程仓库 git clone git-address 删除所有本地分支,除了DEV git stash && git checkout dev && git branch | grep -