Git 使用场景--恢复被覆盖的代码

这篇具有很好参考价值的文章主要介绍了Git 使用场景--恢复被覆盖的代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

同事不小心在 uat 分支把我的代码覆盖了,我试着把我的 dev 分支重新合并到 uat,但是提示没有更改。

同事给我的方案是在我的 dev 分支删除我的代码,合并到 uat,然后在 dev 重新提交我的代码,合并到 uat。

总所周知,git 回退 commit 有两种方法,一种是 git revert,一种是 git reset

git revert 只能回退单个提交,而且适合回退最新的提交,因为回退 HEAD 移动大于 1 的提交大概率会导致冲突,而我合并到 uat 分支有三个提交,所以只能选择 git reset

然而我在网络搜索到的使用 git reset 回退代码并推送到远程的操作方法都是:

# 回退到指定 commit
$ git reset --hard commitId
# 推动到远程
$ git push --force

但是我在执行 git push --force 的时候报错了,公司的 git 设置了不能推送 non-fast-forward 的提交。

在搜索了很多 git 的相关文档后,还是可以使用 git reset 来实现该需求,只是会比上面的方法步骤要多。

比如此时你 dev 分支的 git 日志如下:

A	7572d
B	29d83
C	e422a
D	d82ee

你要将 dev 分支的代码回退到提交 D 然后合并到 uat。你可以

# 使用 hard 模式切换到 D 提交
git reset --hard d82ee
# 使用 mix 模式切换到 A 提交(即远程分支的 HEAD)
git reset --mix 7572d

此时你 git 中的 HEAD 和 INDEX 都是 A 提交的内容,但是工作目录是 D 提交的内容,所以会显示文件被改动,此时将改动提交到 INDEX,push 到远程仓库,则远程仓库的代码就和 D 分支一样了。

这时将 dev 分支合并到 uat 分支。

然后

# 查询提交日志
git reflog
# 使用 hard 模式切换到 A 提交
git reset --hard 7572d
# 使用 mix 模式切换到 D 提交(即远程分支的 HEAD)
git reset --mix d82ee

同理,工作目录是 A 提交的内容,然后将改动 push 到远程,此时 dev 的远程仓库的代码就是 A 提交的代码了。但这时候 dev 合并到 uat 的时候就不会提示说没有改动了。文章来源地址https://www.toymoban.com/news/detail-500904.html

到了这里,关于Git 使用场景--恢复被覆盖的代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git 中拉错了代码分支恢复方法

    在实际开发代码中,我们可能会切换很多分支来开发代码,或者在物理机遇到代码分支不匹配导致无法启动项目,每个分支其实是一个独立的部分,但对于不同的分支如果差别较大,就会有很多冲突影响,以下是一个比较简单的解决方法,希望对大家有用 —如果在 Git 中拉错

    2024年02月03日
    浏览(37)
  • 【Git】说说Git中开发测试的使用&Git分支&Git标签的使用场景

    dev环境 :开发环境,外部用户无法访问,开发人员使用,版本变动很大。 test环境 :测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。 pre环境 :灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。 pro(master)环境 :生产环境,面向

    2024年02月05日
    浏览(45)
  • git远程分支强制覆盖本地分支

    有时候同一个分支,远程仓库的和本地的都被修改的面目全非了,变得很不一致了。 如果想要把本地的替换成远程的,即用远程分支覆盖本地分支。 第一种方式: reset --hard 参数 第二种方式:pull --force参数 有的时候,已经知道远程分支与本地分支有不同的commit,比如本地分支

    2024年02月11日
    浏览(57)
  • Git远程分支覆盖本地分支的详细介绍

    导言: 在使用Git进行团队协作或者个人开发中,经常会遇到需要将远程分支的内容覆盖到本地分支的情况。本篇博客将详细介绍如何使用Git来实现远程分支覆盖本地分支的操作,帮助读者更好地应对这类需求。 一、确认远程分支状态: 首先,我们需要确认远程分支的状态,

    2024年02月15日
    浏览(39)
  • git远程分支覆盖本地

    方式1: git fetch --all git reset --hard origin/dev (这里dev要修改为对应的分支名) git pull origin dev 方式2: git远程分支强制覆盖本地分支_git 远程覆盖本地_hanscal的博客-CSDN博客

    2024年02月11日
    浏览(49)
  • Git篇——git pull远程分支强制覆盖本地的另一个分支

    1.在要被覆盖的分支下,拉取所有代码 2.将本地分支重置  3.切换到其他分支 4.拉取代码覆盖 前2步是强制解决本地分支的可能出现的错误状态,因为状态错误的话,步骤4可能会无法顺利执行。

    2024年02月11日
    浏览(53)
  • git远程覆盖本地分支的方法

    git fetch --all #用来更新本地仓库区 git reset --hard origin/master #将上一步中得到的origin master代码用来更新本地暂存区与工作区的代码,与本地最新的远程代码保持一致 origin/master 只代表一个概念,即远程分支名,是从远程拉取代码后在本地建立的一份拷贝; git pull origin master # 拉取

    2024年02月11日
    浏览(51)
  • Git 将一个分支完全覆盖(不是合并)到另一个分支

    Git 将一个分支完全覆盖(不是合并)到另一个分支 案例: 将dev分支的代码完全覆盖到master上      1.git checkout master      2.git reset --hard dev      3.git push origin master --force 注意:若被覆盖的分支有处于受保护(protected)的状态,则执行push操作后会报错:      1. remote: GitLab: Y

    2024年02月01日
    浏览(87)
  • Git远程分支项目强制覆盖本地项目

    此操作会将本地项目代码与Git远程仓库代码保持完全一致,可能会导致自己本地修改的代码被覆盖,覆盖后找都没法找那种。所以操作前请确认,本地所有修改文件是否不重要或者自己以备份。 操作主要分几个步骤完成。 第一步:获取远程所有分支的最新更新 第二步: 强制

    2024年02月05日
    浏览(59)
  • git 使用远端代码强制覆盖本地

    有时候会遇到这种情景,我们本地的代码不需要了,需要使用远端的代码强制覆盖,这时候可以使用下面的命令 然后再执行下面的命令,重置为远端的代码,即使用远端的代码将本地覆盖 origin/远端分之名 举例,如下图,本地仓库有一个待push 的提交,远端有一个待pull的节点

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包