解决git 本地代码与远程仓库冲突问题

在使用协同开发难免会出现同时修改某个文件导致代码冲突的问题


	 * branch            master     -> FETCH_HEAD
	error: Your local changes to the following files would be overwritten by merge:
	        lib/pages/search_page.dart
	Please commit your changes or stash them before you merge.
	Aborting
	Updating 657e136..4f8135c

一、使用 stash 缓存修改

最简单的就是使用git stash 将自己修改的代码片段进行一个本地仓库的临时缓存


	$ git stash
	Saved working directory and index state WIP on master: 657e136 search page modif                                                                                                                                  ied

使用git stash list 查看缓存代码片段


	$ git stash list
	stash@{0}: WIP on master: 657e136 search page modified

使用了git stash命令将改动的代码缓存后,就可以执行pull 将远程仓库更新到本地了,

现在使用pull 更新代码


	$ git pull origin master

现在更新没问题了

再将我们自己修改的代码合并到更新后的代码中去


	$ git stash pop stash@{0}
	Auto-merging lib/pages/search_page.dart
	CONFLICT (content): Merge conflict in lib/pages/search_page.dart


其中stash@{0} 就是git stash时的一个标记,也可使用git stash save XXX 来定义一个自己标记,方便自己查询管理

现在回到自己写的代码中去,你会发现
在这里插入图片描述
在这里插入图片描述
很明显git 帮你将远程的和本地的分开标记出来了,现在我们只需要将自己修改过的地方合并到Updated upstream中去再 commit 就ok

其实stash 有点类似这个情景(我们平时写代码,有个同事说哎XX 我提交了一个代码是否你也修改了 XX方法?也是你意识到了直接更新定会出现冲突,咋办! 我们就像将自己修改的文件先拷贝一份呗,然后在将同事提交的代码更新下来,然后再将自己改过的方法合并进去,再提交)。

二、直接还原

有时候我们本地并没有修改多少,使用直接还原也许更省事,

先使用git log 查询一下提交记录


	$ git log
	commit 4f8135c32d508d250b83fe12644c4b65db87a1af (HEAD -> master, origin/master)
	Author: dex <601078218@qq.com>
	Date:   Thu Nov 7 22:19:04 2019 +0800
	
	    the tab_navigator.dart is modified

		##  ... 省略其他log

直接拷贝 commit版本后的hash码


	$ git reset --hard 4f8135c32d508d250b83fe12644c4b65db87a1af
	HEAD is now at 4f8135c the tab_navigator.dart is modified
	

ok 代码已经还原到上一次提交状态,但是这个需要谨慎使用,执行还原后你修改的代码将不复存在!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的痕迹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值