打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
git 各种撤销操作办法
userphoto

2022.08.20 广东

关注

1. git add 添加 多余文件

这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销操作

git status     先看一下add 中的文件
git reset HEAD   如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 ,HEAD 可以不写,直接git reset 
git reset HEAD XXX/XXX/XXX.java    就是对某个文件进行撤销了,HEAD 可以不写,直接git reset  XX文件

2. git commit 错误

如果不小心 弄错了 git add后 , 又 git commit 了,但还没push到远程。
先使用
git log 查看节点
commit xxxxxxxxxxxxxxxxxxxxxxxxxx
Merge:
Author:
Date:

然后
git reset commit_id    本地回滚

PS:还没有 push 也就是 repo upload 的时候

git reset commit_id (回退到上一个 提交的节点(即目标版本号) 代码还是原来你修改的)
git reset –hard commit_id (回退到上一个commit节点, 代码也发生了改变,变成上一次的)

如回到上一次版本:git reset --hard  HEAD^ 或者git reset   HEAD^

这样操作,只是将本地仓库回滚到上次提交之前的状态,不会对远程仓库造成影响。

延伸:远程回滚

远程仓库回滚需要在本地仓库回滚的基础上,进行强制推送。

  git reset --hard 目标版本号  git push -f

-f 即强制推送,因为本地仓库在reset之后,版本比远程仓库低,普通推送无法推送,会报错,需要进行强制提交

3.如果要是 提交了以后,可以使用 git revert(反做)

还原已经提交的修改,
此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交
git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert commit-id (撤销指定的版本,撤销也会作为一次提交进行保存)
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

步骤:使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:
(1)反做,使用“git revert -n 版本号”命令。如下命令,我们反做版本号为8b89621的版本:

git revert -n 8b89621019c9adc6fc4d242cd41daeb13aeb9861
注意: 这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名。
(2)提交,使用“git commit -m 注释”,如:

git commit -m "revert add text.txt" 

常见的情况

1.本地仓库commit,但还没push远程仓库。需要撤销这次commit。使用git log 可获取到commit  id.在Git中,用HEAD表示当前版本,上一个版本就是HEAD^

  1. 解决方法:
  2. 第一种:git reset --soft HEAD~ 可成功撤销最近一次commit,不撤销git add file。 表现为保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区
  3. 第二种:git reset --hard HEAD~ 撤销commit且撤销add 同时重置工作区和暂存区,即工作区改动的代码被撤销)。
  4. 第三种:git reset HEAD~ 不加参数(mixed):撤销commit且撤销add ,但保留工作目录,并清空暂存区
  5. --soft不删除工作空间的改动代码 ,撤销commit,不撤销git add file
  6. --hard删除工作空间的改动代码,撤销commit且撤销add(慎用)
  7. 第四种:git revert HEAD 撤销当前的提交。再执行git commit -m "注释" 提交新的commit

2.撤销指定文件到指定版本

# 查看指定文件的历史版本$ git log <filename># 回滚到指定commitID$ git checkout <commitID> <filename>

3.删除最后一次远程提交

  1. 方式一:使用revert
  2. $ git revert HEAD
  3. $ git commit -m "注释"
  4. $ git push origin master
  5. 使用revert 撤销某版本,但push远程仓库后,形成新的commit。所以先要执行git commit -m "注释",再执行git push origin master
  6. 方式二:使用reset
  7. $ git reset --hard(或者soft) HEAD^
  8. $ git push origin master -f
  9. 注释:如选择git reset --soft HEAD^ 本地的工作区最后修改还保留着。此时使用git push 那么远程仓库是上一次的版本。 所以在先前最新的commit记录就没有了
  10. 这时可以对本地工作区当前代码修改,重新提交推送
  11. //修改代码,添加修改
  12. git add .
  13. //重新提交
  14. git commit -m "CSDN-java反射06-成员变量Field-代码优化"
  15. //重新推送
  16. git push origin master
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
没想到,Git居然有3种“后悔药”!
git fetch 更新远程代码到本地仓库
Git撤销&回滚操作
一篇文章,教你学会Git
Git用法
Git恢复之前版本的两种方法reset、revert(图文详解)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服