git commit后发现git pull 拉取代码失败的解决方案(致命错误:需要指定如何调和偏离的分支。)


前言

人员张三和人员李四在同一分支(dev)上开发


一、情况复现

1.以前多人开发同一分支提交代码逻辑(下拉取后提交)

git add .
git commit -m 'fix: 修改逻辑'
git pull origin dev
git push origin dev

2.报错

来自 https://xxxxxxxxxxxxx
branch dev -> FETCH_HEAD
提示:您有偏离的分支,需要指定如何调和它们。您可以在执行下一次
提示:pull 操作之前执行下面一条命令来抑制本消息:
提示: git config pull.rebase false # 合并
提示: git config pull.rebase true # 变基
提示: git config pull.ff only # 仅快进
提示:您可以将 “git config” 替换为 “git config --global” 以便为所有仓库设置
提示:缺省的配置项。您也可以在每次执行 pull 命令时添加 --rebase、–no-rebase,
提示:或者 --ff-only 参数覆盖缺省设置。
致命错误:需要指定如何调和偏离的分支。

在这里插入图片描述

二、解决方案

如果你已经git commit, 从第1步开始,如果没有从第2步开始

1. 撤销最近一次提交

git reset --mixed HEAD^

说明:
git reset:这是Git的一个命令,用于重置当前HEAD到指定的状态。
(1)–mixed:=这是git reset命令的一个选项,它会重置暂存区的状态,使其与HEAD相同,但是不会改变工作区。换句话说,–mixed选项会撤销已经暂存的改动,但是不会撤销已经做出的改动。=
(2)HEAD:===这是一个指向最近一次提交的引用。HEAD是当前分支上最近一次提交的引用,是一个修饰符,表示父提交,所以HEAD^表示当前分支上倒数第二次的提交。===
所以,git reset --mixed HEAD^命令的作用就是撤销最近的一次提交,并且将这些改动从暂存区移除,但是保留在工作区。

2.提交代码

dev 为分支名

git stash // 存储工作区的修改
git pull origin dev // 拉取最新代码
git stash apply // 应用最新存储的代码
git add .
git commit -m 'fix: 提交说明'
git push origin dev

3.注意点:

当你进行上述操作push代码又双叒叕报警告,显示和主分支不一样,可能是你的同事在你拉取后的几分钟里又提交了一次代码,因此你再执行一遍上述步骤即可。

常用的 git stash 命令:

git stash 将所有未提交的修改(包括暂存的和未暂存的)保存到一个新的stash中,然后重置你的工作目录到上次的提交状态
git stash save “message”:同git stash,并附加一条可选的消息。(更好让你理解这个stash为什么被创建)
git stash list:列出所有的stash。
git stash apply:应用最近的stash。
git stash apply stash@{n}:应用指定的stash。
git stash pop:应用最近的stash,并从stash列表中删除它。
git stash drop stash@{n}:删除指定的stash。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值