git冲突解决

# git冲突解决

一、git pull 拉代码的时候,或者切换分支的时候,防止冲突和不便,,会用到git stash,将工作区内容暂存起来。

比如:为了fix 一个bug,  先stash, 使返回到自己上一个[commit](https://so.csdn.net/so/search?q=commit&spm=1001.2101.3001.7020), 改完bug之后再stash pop, 继续原来的工作。

怎么办:

​    1、git stash

​        备份当前工作区的内容,保存到git 栈中,从最近的一次commit中读取相关内容

​    2、git pull  或者做其他的工作    

​    3、git stash pop

​        从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。。获取之后,会删除栈中对应的stash。。

​        由于可能会stash多次,git使用栈管理,我们可以使用git stash list查看所有的stash

​    git stash list

​        显示git栈中的所有工作区内容的备份,

​        比如使用git stash apply stash@{1},就可以把版本号为stash@{1}的备份取出,不会删除对应的stash。。0为最新版本

​    git stash clear

​        清空git栈

还可以git reset --hard放弃本地修改,然后就可以git pull了。。但是不推荐使用gitreset --hard指令,实在是太危险啦!

二、但是git stash pop取出备份的时候也会出现冲突

比如,有个文件login.java,,你修改了一段代码,git stash保存以后,你从服务器上继续git pull了别人的代码,,

如果此时,别人的代码也修改了login.java。。。

此时当我们使用git stash pop 的时候,就会发生冲突,因为我们的修改不是基于最新的pull下来的文件的基础上。。所以git很难判断,

解决方法:

​    备份我们修改后的文件,,删除程序文件中我们所做的修改,重新pull,,然后在用我们备份好的文件替换掉,,再push上去即可。。

​    另一种就是上面说的git reset --hard了,,,,直接忽略本地的修改。。。但这样明显不太爽~

 

为什么我们需要它
不得不说,在知道这个命令的时,以及之后的使用中,我都超级热爱这个命令,因为它真的太好用了。

给大家说一下我使用这个命令的场景:

此时我在 feature_666 分支,非常聚精会神加持高专注地实现一个功能 666 模块,简直键盘如飞的编写代码~~~ 
然后这时,客户反馈出一个 bug , 非常严重,必须立马解决,优先级为 0 !!! 
于是,我需要去到 release 分支去 checkout 新的分支去工作了,但是 666 功能还没完成怎么办? 
此时我面临着一个选择题: 
A:提交后切换,代码保存到分支 feature_666,却产生一个无意义的提交 
B:不提交直接切换,然而这个选项根本没人会选。

是不是很难选,此时,别忘记还有 C 选项!

C:使用 git stash , 将当前修改(未提交的代码)存入缓存区,切换分支修改 bug ,回来再通过 git stash pop 取出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值