git 各种撤销操作办法

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^

解决方法:

第一种:git reset --soft HEAD~  可成功撤销最近一次commit,不撤销git add file。 表现为保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区

第二种:git reset --hard HEAD~  撤销commit且撤销add 同时重置工作区和暂存区,即工作区改动的代码被撤销)。
第三种:git reset  HEAD~     不加参数(mixed):撤销commit且撤销add ,但保留工作目录,并清空暂存区

--soft不删除工作空间的改动代码 ,撤销commit,不撤销git add file

--hard删除工作空间的改动代码,撤销commit且撤销add(慎用)
第四种:git revert HEAD  撤销当前的提交。再执行git commit -m "注释" 提交新的commit

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

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

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

方式一:使用revert
$ git revert HEAD
$ git commit -m "注释"
$ git push origin master

使用revert 撤销某版本,但push远程仓库后,形成新的commit。所以先要执行git commit -m "注释",再执行git push origin master


方式二:使用reset
$ git reset --hard(或者soft) HEAD^
$ git push origin master -f
注释:如选择git reset --soft HEAD^  本地的工作区最后修改还保留着。此时使用git push 那么远程仓库是上一次的版本。 所以在先前最新的commit记录就没有了

这时可以对本地工作区当前代码修改,重新提交推送

//修改代码,添加修改
git add .
//重新提交
git commit -m "CSDN-java反射06-成员变量Field-代码优化"
//重新推送
git push origin master

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值