git撤销操作(git后悔药)

git merge 撤销操作

Git撤销暂存区的修改

git add 添加文件到暂存区。
git commit 提交更改,把暂存区的所有内容一次性全部提交到当前分支,清空暂存区。

有两种相关操作
通过 git checkout – 文件名 命令可以撤销文件在工作区的修改

该命令是撤销我们在工作区全部的修改记录
git checkout -- ./

通过 git reset a 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改,但此时工作目录中a文件又成了已修改未暂存状态,用上面的命令再次撤销,变为clean状态,即清理干净

三种开发是常见场景

  • 修改后,文件没有放入暂存区(即文件一直在工作区):用 git checkout – 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
  • 修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout – 文件名 清除工作区的改动
  • 修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout – 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout – 文件名 清除工作区的改动
vim a.txt #修改工作目录文件
git status #此时会提醒Changes not staged for commit
git checkout -- a.txt  #执行完这条命令,发现原理是把这个文件同步为暂存区的样子

注意,经过测试发现其原理是把当前文件同步为成暂存区的样子

如果是以下情况:echo "test" > b.txt

那么b.txt对git来说是未追踪文件Untracked files;此命令无效

Git撤销本地commit操作

写完代码后,我们一般这样

git add . //添加所有文件

git commit -m "本功能全部完成"
git reset --soft HEAD^

HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2

不删除工作空间改动代码,不撤销git add,仅仅是撤回commit操作

git reset --mixed HEAD^

不删除工作空间改动代码,撤销commit,并且撤销git add . 操作,相当于撤回commit操作,撤回add操作,恢复到add之前内部,这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的

git reset --mixed HEAD^

删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就相当于完全恢复到了上一次的commit状态。

git撤销merge

当我们使用git merge操作合并代码但还没add时,若想取消这次合并,使用命令

git merge --abort

假如不幸已经 git add 了,先用 git reflog 指令显示历史的操作,再用 'git reset --hard commit id’就可以回退到操作之前的状态了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值