git push 成功后如何撤销回退

一、git reset

1、首先用 git log 命令查看历史记录git push 成功后如何撤销回退_第1张图片

 2、假设要回退到上一版本,版本号应是Fri Jul 12 11:07:01 2019时间的19462f6f46cf4cbc211d366359afac0c17a7c190

git reset --soft 19462f6f46cf4cbc211d366359afac0c17a7c190
// 注意 --hard 参数会抛弃当前工作区的修改
// 使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交

3、现在回退了,但是还得提交回退,如果用 git push origin step5/test 会提示本地的版本落后于远端的版本

yunan.hu@DLC000D724GD2DD MINGW64 /c/huyunan/test (step5/test)
$ git push origin step5/test
To https://github.com/acn-yunan-hu/test.git
 ! [rejected]        step5/test -> step5/test (non-fast-forward)
error: failed to push some refs to 'https://github.com/acn-yunan-hu/test.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.

为了覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force

yunan.hu@DLC000D724GD2DD MINGW64 /c/huyunan/test (step5/test)
$ git push origin step5/test --force
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/acn-yunan-hu/test.git
 + d81861f...19462f6 step5/test -> step5/test (forced update)

这样就回退成功了,但是有人会发现,另一个同样的工程pull拉取最新代码的时候,不能拉取最新代码。这是因为有问题的工程的版本和未回退前的版本是一样的,现在回退了也就是版本降低了,pull是不可能从高版本降到低版本的。如果是这样,可以用 git branch -D step5/test 来删除本地分支,或是删除文件夹,重新下载。

当然要解决这个问题,还可以用 git revert的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本,这样可以保留要回退的版本,如果有其它人 pull 工程就不会取不到最新代码了。
二、git revert

git push 成功后如何撤销回退_第2张图片

 

现在想回退到 44444 版本

1、如果想回退 44444 版本,就需要 revert 555555555 版本(这里可能不好理解)

git revert -n fa63357f5bba1f7b033c8005d85b245a00e4a115

2、回退之后 git status 查看冲突,解决冲突git push 成功后如何撤销回退_第3张图片

 git push 成功后如何撤销回退_第4张图片

 3、用 git log 查看信息,会发现生成了一个新的版本git push 成功后如何撤销回退_第5张图片

 4、用 git push 推上远程git push 成功后如何撤销回退_第6张图片

 到此,反做成功。

你可能感兴趣的:(git,git)