当前位置:   article > 正文

如何撤回Git push 到远程分支以后的方法_git push分支后 回退分支

git push分支后 回退分支

Git push 到远程分支以后的撤回方法

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

解决流程

假如最近的这次push ,我们发现有错误或者提交到不该提交的分支上了或者其他原因,总之想从远程分支上撤销下拉。

一、查询Git提交日志记录。

1. 首先要查看提交日志记录,找到记录ID,这个过程有两种方式

1.采用 git log 命令
2.采用git reflog 命令

2. git log

这种查询 查询的日志量会比较臃肿,不太好看,可以进一步使用 格式化命令git log --pretty=oneline 输出简洁信息

huilong-MackPro:dragon zhanghuilong$ git log
commit 28905311ca76ebc526d2032f2d4e75bee7be4e97 (HEAD -> develop, origin/develop)
Author: zhanghuilong <zhanghuilong@corp.netease.com>
Date:   Wed Jan 9 10:46:39 2019 +0800

    第3次 commit

commit 82056bb137f14ff4db4317d5e77d0bb872d8bb51
Author: zhanghuilong <zhanghuilong@corp.netease.com>
Date:   Wed Jan 9 10:45:01 2019 +0800

    第2次 commit

commit 23c83d0e4bb90fd81be37716e15ca7b4bbe92d84
Author: zhanghuilong <zhanghuilong@corp.netease.com>
Date:   Wed Jan 9 10:37:19 2019 +0800

    第一次 commit

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
3. git log --pretty=oneline
huilong-MackPro:dragon zhanghuilong$ git log --pretty=oneline 
28905311ca76ebc526d2032f2d4e75bee7be4e97 (HEAD -> develop, origin/develop) 第3次 commit
82056bb137f14ff4db4317d5e77d0bb872d8bb51 第2次 commit
23c83d0e4bb90fd81be37716e15ca7b4bbe92d84 第一次 commit
d3fa4ea0de5b2f07a456b9ddf85dca0d1be20ae3 add getbyId method
fc4e4251cbf27d4352b06b25576c9eee7a238c09 add get method

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
4. git reflog

HEAD就代表当前 {n}, 0 表示当前分支,1代表上一次提交 ,以此类推。

huilong-MackPro:dragon zhanghuilong$ git reflog
2890531 (HEAD -> develop, origin/develop) HEAD@{0}: commit: 第3次 commit
82056bb HEAD@{1}: commit: 第2次 commit
23c83d0 HEAD@{2}: commit: 第一次 commit
d3fa4ea HEAD@{3}: commit (amend): add getbyId method
5fa550c HEAD@{4}: commit: add get method

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
5.区别点:
git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
  • 1

二、进行版本回退

1. 本地回退

【 假如:第三次提交的是有问题的,想回退: 2890531 (HEAD -> develop, origin/develop) HEAD@{0}: commit: 第3次 commit】

通过log 我们可以查到,最近一次提交push的 记录ID为:2890531。

可以通过 命令:git reset 进行回退,可以有两种实现方式:

git reset –-soft  具体想回退的版本号
git reset –-hard 具体想回退的版本号
  • 1
  • 2

前者-soft 表示只是改变了HEAD的指向,本地代码不会回退发生变化,使用git status命令可以看到,同时也可以git commit提交。后者-hard直接会改变本地源码,不仅仅指向变化了,代码也会回退到第2次commit push后的状态,所以使用时要格外细心,必要时可以先 stash 当前代码,后面可以恢复unstash再次使用。

git reset --hard【这里采用 --hard 演示】

huilong-MackPro:dragon zhanghuilong$ git reflog
2890531 (HEAD -> develop, origin/develop) HEAD@{0}: commit: 第3次 commit
82056bb HEAD@{1}: commit: 第2次 commit
23c83d0 HEAD@{2}: commit: 第一次 commit
d3fa4ea HEAD@{3}: commit (amend): add getbyId method
5fa550c HEAD@{4}: commit: add get method
fc4e425 HEAD@{5}: commit: add get method
8ce1301 HEAD@{6}: commit: add find method
1f237ea HEAD@{7}: commit: add a method
78971d4 (origin/master, origin/HEAD, master) HEAD@{8}: checkout: moving from master to develop
78971d4 (origin/master, origin/HEAD, master) HEAD@{9}: clone: from https://github.com/hrsstd/dragon.git
huilong-MackPro:dragon zhanghuilong$ git reset --hard 82056bb
HEAD is now at 82056bb 第2次 commit
huilong-MackPro:dragon zhanghuilong$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果你再执行一次 git reflog 就会看到 所有变更记录,例如:

huilong-MackPro:dragon zhanghuilong$ git reflog
82056bb (HEAD -> develop) HEAD@{0}: reset: moving to 82056bb
2890531 (origin/develop) HEAD@{1}: commit: 第3次 commit
82056bb (HEAD -> develop) HEAD@{2}: commit: 第2次 commit
23c83d0 HEAD@{3}: commit: 第一次 commit
d3fa4ea HEAD@{4}: commit (amend): add getbyId method
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.重新push 远程分支

正常情况你会遇到以下提示:
这个是我用idea 工具直接提交的提示语

Push rejected: Push to origin/develop was rejected
  • 1

如果在控制台使用命令的话会更详细:重点是这句话
because the tip of your current branch is behind
提交失败,因为当前分支的版本低于远程分支的版本,所以要想覆盖掉它,可以使用force

huilong-MackPro:dragon zhanghuilong$ git push origin develop
To https://github.com/hrsstd/dragon.git
 ! [rejected]        develop -> develop (non-fast-forward)
error: failed to push some refs to 'https://github.com/hrsstd/dragon.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
huilong-MackPro:dragon zhanghuilong$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.正确操作: git push origin 分支名 --force

huilong-MackPro:dragon zhanghuilong$ git push origin develop --force
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/hrsstd/dragon.git
 + 2890531...82056bb develop -> develop (forced update)
huilong-MackPro:dragon zhanghuilong$ 
  • 1
  • 2
  • 3
  • 4
  • 5

4.结果对比

撤销前的GitHub状态显示:
在这里插入图片描述

撤销后的状态:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/794773
推荐阅读
相关标签
  

闽ICP备14008679号