首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决合并冲突案例

最近发现有些部门刚使用Git的过程,存在一些操作流程不规范,导致合并代码丢失以及stash查看不出来差异的问题。下面我将举例说明问题:

------------------------------------------------------------------------------------

新建两个分支,分别改两个文件提交。然后发起合并。

具体步骤:

---克隆一个版本库

git clonehttp[s]://example.com/path/to/repo.git/

---新建文件

touch a.txt

---编辑文件

vim a.txt

---hello this is a test master

git add a.txt

git commit -m "wrote a txt master"

创建dev分支并切换至dev分支:

git checkout -b dev

touch a.txt

vim a.txt

---this is a dev

git add a.txt

git commit -m "modify a txt dev"

git checkout master

vim a.txt

--hello,this is master

git add a.txt

git commit -m "modify a txt master"

git merge dev---dev往master合并时,冲突;

--冲突了

git status---查看冲突文件

git diff ---查看差异文件

vim a.txt

解决冲突:丢失代码

再提交:

git log 查看分支合并情况

推送到远程仓库:

git push -u origin master

切换到dev分支,pushdev分支到远程仓库

git push origin dev:dev

然后在stash 查看两个分支提交记录:

然后发送合并请求:

在diff中就看不到差异:

原因就是在合并解决冲突时,dev 内容丢失;

如果反向合并,将master合并dev。就可以看到之前解决冲突差异文件。

所以正确解决冲突以及操作的步骤应该是:

当dev向master发起合并请求时,出现冲突;

解决冲突:将master代码反向合并至dev,解决冲突后,更新提交,发起合并master请求;

接下来我们看下正确的操作:

两种方法更新远程分支至本地分支;

1、使用Git pull 更新本地分支进行自动合并;

2、使用git merge 手动合并远程分支至本地分支;

git pll 先从远程仓库获取分支更新本地分支;

git pull origin dev:dev

---取回远程库中的dev支,与本地的dev分支进行merge;

查看dev依然是之前的更改:

然后合并master至dev,dev和master内容一致。

dev分支增加b文件;hi,this is b on dev!

然后进入master 修改文件:

dev合并至master:

这时候冲突,

先取消合并 ,git merge --abort

然后切换至dev,将master合并至dev;

提交合并

然后再向master合并:

此时推送之远程。

git push

git push --set-upstream origin dev

然后查看stash,dev 和master

就不会存在差异:

学会GIT冲突的解决办法了吗?当然这是一种,这是最近困扰很多新手的一个问题,所以需要大家规范操作。O(∩_∩)O哈哈~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180105G0MI7M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券