第二章Git 基础#撤消操作

撤消操作

在任何一个阶段,你都有可能想要撤消某些操作。 这里,我们将会学习几个撤消你所做修改的基本工具。 注意,有些撤消操作是不可逆的。 这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。

//忘记了暂存某些需要的修改,可以像下面这样操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend -m "Commit message"
/**
    注意 建议使用--amend带上提交信息 -m "Commit message"
    它与直接commit一个文件时不同,不带-m,再次查询状态直接显示为未提交。
    而使用--amend若没带-m,再次查询状态时看似提交成功了,但你下次再没带-m并且编辑器再次弹出时里面却显示没提交,即处于暂存区。
    最后到底提交成功没尚未可知。(自测得出)。
*/
//上面 -m "Commit message"为自添,官网学习文档相应部分为 $ git commit --amend

自我总结:与其说是撤销操作,倒不如说是用第二次操作替换第一次操作,而第一次操作就像从未出现过一下,不会出现在仓库历史里。但是如何直接真正意义上的撤销一次提交操作(比如说:提交错了一个文件)

取消暂存的文件

/**
    官网文档提示代码 (use "git reset HEAD <file>..." to unstage)
    所以用下面的命令也可以,但是本人用的版本提示跟它不一样(见下方截图),两种命令都可以,
    注意取消暂存(下面两种)是个危险的命令,如果加上了 --hard 选项(暂时不懂此命令)则更是如此。 如果
工作目录中的文件尚未修改,会相对安全一些。若在暂存后修改工作目录中的文件,此时取消暂存,暂存中的文件
将会直接消失,难以恢复出当时暂存文件的内容。
*/
$ git reset HEAD I.txt

//or --> $ git restore --unstaged <file> 应该跟git reset 一样危险(官网未提及此命令),由于会覆
盖本地修改,所以本地修改的内容会消失。

$ git restore --unstaged I.txt

撤消对文件的修改

将文件还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)

/**
    官方教学文档中提示(use "git checkout -- <file>..." to discard changes in working
directory)
    另外请务必记得 git checkout -- <file> 是一个危险的命令。 你对那个文件在本地的任何修改都会消失
——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命
令。
*/

如果你仍然想保留对那个文件做出的修改,但是现在仍然需要撤消,我们将会在 Git 分支 介绍保存进度与分支,这通常是更好的做法。

记住,在 Git 中任何 已提交 的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复 (阅读 数据恢复 了解数据恢复)。 然而,任何你未提交的东西丢失后很可能再也找不到了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值