Git · 三 git的冲突合并、git stash指令使用方式和脏工作树的管理

  当我们使用git pull指令从远程服务器拉取最新版本的代码时,常常很容易和本地的版本的代码出现冲突,例如出现这样的提示:

这种情况是出现在你修改了本地代码,修改的代码和远程分支的代码出现冲突且修改的代码没有commit到本地分支时,此时,远程分支的代码无法和本地分支代码进行合并,是因为还有些修改的代码在工作树上没有同步到本地分支。Git在提示中,提供两种解决方式,第一种是先将工作树的修改提交本地分支,第二种是先把改动暂存脏工作树,这个解决方案,分别适合对应的两种场景。

1、当前你的改动,只是对于一些小bug的修改,对主流程改动不大,你可以直接将工作树的中修改提交到本地分支,再pull远程分支的代码

$ git add .
$ git commit -a -m "备注"
$ git pull <branch>

此时会提示无法自动合并,因为存在冲突

注意图中红色框中,当前的分支多一个状态正在Merging,要结束这个状态,需要你手动处理冲突并提交到本地分支。

如何手动处理冲突?

打开提示存在无法自动合并的冲突文件你会看到

你可以手动选择是保留本地修改还是引用远程分支的最新版本代码,或者其他骚操作。

修改完文件后,你需要将修改后的代码提交在本地分支,这样才算真正完成处理冲突成功合并代码。

完成以上操作后,分支就会恢复正常状态。

2、第二种场景是你正在进行新版本的开发,此时需要你修改线上一个bug,此时第一种方法就不能用了。这时,你可以使用git stash指令将你新版的未开发完整的代码现在保存到脏工作树,工作树恢复到上一个提示本地分支状态,此时你就可以pull远程分支的代码进行bug修改,修改完bug后,再将的未开发完的代码从脏工作树取出继续开发。具体指令操作如下

$ git stash
$ git pull
# 改bug
# git stash pop <stash>  #可能在脏工作树里在多个记录

这里有两个点要注意的:

 1、当你重新从脏工作树中,取出记录时,也会出现冲突的情况,解决方法和pull类似

2、在脏工作树中可能会存在多个记录,所以恢复记录记得不要恢复错了

使用git stash list就可以查看当前脏工作区也有缓存记录

{}里中就是对应脏工作区中的记录对应名字,可以通过git stash pop <stash>对应选择恢复某个记录

图中的情况就是恢复数据后出现冲突,当前分支的状态变成MERGING和pull出现冲突的情况一致,需要要手动解决冲突,commit后才会恢复正常状态。

你在恢复之前也可以通过git stash show -p <stash>查看对应和本地分支的区别

注意:脏工作区中的数据取出,记录还是存在的,需要手动删除

$ git stash clear

git stash指令的官方文档

本章的内容到这里就完了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值