git解决冲突

摘要:
十分之九的情况下,冲突的解决在生活中并不令人满意。合并分支并不总是容易的。在主分支上,更改自述文件的最后一行。txt文件到:创建一个新的分支既快速又简单。提交:$gitaddreadme Txt$gitcommit-m“&simple”[master400b400]&simple1filechanged,1插入(+),1删除(-)现在,master分支和feature1分支都分别有新的提交,如下所示:在这种情况下,Git无法执行“快速合并”,只能尝试合并它们的修改,但这种合并可能会导致冲突,让我们试试:$gitmergefeature1Automergeredme。txtCONFLICT:合并冲突读取时间。txtAutomaticmerge失败;解决冲突,然后提交结果!Git告诉我们,readme txt文件有冲突。提交之前必须手动解决冲突。摘要当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-br-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-br-conflict-merged

用带参数的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命令可以看到分支合并图。

 

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

上篇B:魔兽世界之一:备战iOS 审核被拒下篇

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

相关文章

开发与OP流程规范(git)

概况 当前文档包涵开发流程规范与上线(OP)流程规范。 通过规范开发流程可以严格控制线上分支的代码质量及稳定性。使用成熟的工作流程模型,可以使团队协作更加流畅。 通过规范上线(OP)流程,保证线上环境的稳定,明确职责。 涉及人员 研发工程师 代码审核员(技术负责人或由技术负责人指定的研发工程师,不可以是开发者本人) 产品经理 测试工程师(未到岗前,产...

ipynb(jupyter notebook)的git管理的比较好的方式

ipynb本身也是文本文件, 是json文件, 但对人还是不友好, 我打算用的一种比较好的方式是用jupytext, 需要单独用pip等安装这个包. 写成了这个脚本 workflow大概是这样, 每次想要用git保存当前ipynb时, 先用jybc -f py a.ipynb得到.py文件, git同时追踪.ipynb文件和.py文件. 或者也可以不追踪....

mac 安装git

Git安装 下载Git有两种方法 直接下载安装包,Git下载地址 用homebrew指令下载,不过首先需要安装homebrew 在终端执行后面指令安装,homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/ins...

运维与自动化系列④自动化部署基础与git

运维与自动化系列④自动化部署基础与git 自动化部署基础与git 一:上一篇的代码是保存在本地,但是在生产环境当中是由版本控制进行代码管理,以便于发布代码和回滚,一般是使用gitlib比较多,另外还有用svn的公司,趋势是git为主,因此本文以git为使用对象 1.1:在git服务器新建一个web组和项目web-demo: 准备web页面并提交至git服务...

MySQL高可用方案--MHA部署及故障转移

架构设计及必要配置 主机环境 IP                 主机名             担任角色 192.168.192.128  node_master    MySQL-Master| MHA-Node 192.168.192.129  node_slave     MySQL-Slave | MHA-Node(备选Master) 19...

CocosCreator 从Git拉取项目meta文件变更问题 (资源变更警告、class already exists、大小写敏感)

参考: cocos meta git 提示 cocos论坛-资源变更警告 cocos论坛-class already exists meta文件被修改 从git拉取项目后,meta文件被修改 这个问题的原因是git在windows和linux不同系统间换行符不一样。 windows 换行符 linux 换行符 我们可以手动设置git让两个系统的文件的...