撤销 Git 操作的方法

我们在实际开发中,任何时间段都可能遇到问题需要撤销刚刚的操作,在 Git 中,有多种方法可以撤销,根据不同的需求和情况,选择适合的方式。

1. 撤销未提交的更改

1)撤销对文件的更改

如果对某些文件进行了修改但还没有提交,可以使用 git checkout(在较新的 Git 版本中使用 git restore)撤销这些更改。

git restore <file>  # 较新的 Git 版本推荐使用
git checkout -- <file>  # 较老的 Git 版本使用

2)撤销所有未提交的更改

git restore .  # 较新的 Git 版本推荐使用
git checkout -- .  # 较老的 Git 版本使用

原理:先查找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。

注意⚠️,工作区的文件变化一旦被撤销,就无法找回了。 

2. 撤销已添加到暂存区的更改

如果已经使用 git add 将更改添加到暂存区,但还没有提交,可以使用 git reset 将这些更改从暂存区撤回。

git reset <file> # 撤销某一个文件
git reset  # 撤销所有已添加到暂存区的更改

3. 撤销最近的提交

如果希望以前的提交在历史中彻底消失,可以使用 git reset ,丢弃掉某个提交之后的所有提交。

1)撤销提交但保留更改到工作区:

git reset --soft HEAD~1  # 撤销最近的一个提交,保留更改在工作目录中

2)撤销并丢弃更改,也就是让工作区恢复之前的状态:

git reset --hard HEAD~1  # 撤销最近的一个提交,并丢弃更改

原理:让最新提交的指针回到之前的某一个时间点,该位置之后的提交都会消失。

4. 撤销推送到远程仓库的提交(不推荐)

如果已经将提交推送到远程仓库 push,可以使用以下步骤撤销并强制推送:

# 首先,本地撤销最近的一个提交
git reset --hard HEAD~1  


# 然后,强制推送到远程仓库
git push --force

注意⚠️:强制推送会覆盖远程仓库的历史记录,可能影响其他成员的工作,请谨慎使用!

5. 使用 git revert 撤销提交(推荐)

如果已经推送了提交并希望保留历史记录,可以使用 git revert 创建一个新的反向提交。

git revert <commit>  # 撤销指定的提交
git revert HEAD # 撤销最近一次提交
git revert [commit1] [commit2] # 撤销多个提交,按顺序写

原理:git revert 不会删除历史记录,而是在当前提交后面,创建一个新的提交,抵消掉上一次提交导致的所有变化。

6. 使用 git stash 暂存未完成的更改

如果有未完成的更改,希望暂时将其保存以便切换到其他分支,可以使用:

git stash

当准备好恢复这些更改时,可以使用:

git stash pop

7. 替换上一次提交内容

如果提交以后,发现提交信息不对,可以使用 git commit 的 --amend 参数修改上一次的提交信息。

git commit --amend -m "重新提交信息内容"

原理:产生一个新的提交对象,替换掉上一次提交产生的提交对象。

这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,--amend 不仅可以修改提交信息,还可以整个把上一次提交替换掉。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值