当前位置:首页-文章-Git配置管理-正文

十、Git版本库中的撤销操作

1、撤销文件的修改

自从你上次将README.txt文件提交到版本库后,你又对README.txt做了很多修改,但是过了不久,你突然觉得有些地方改错了,或者不想保留这些修改了,不幸的是你又因为忘记到底改了哪些内容而无法手动恢复,咋办?这种情况在工作时经常会遇到,特别是在写代码的时候,一上头就干了半天,回过头发现全是废操!我TM要回去!

别怕,Git带你飞!在Git版本库中,所有的操作都是有记录的,也可以帮你光速恢复!

先在版本库中执行git status命令:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.txt

no changes added to commit (use "git add" and/or "git commit -a")

Git已经非常清楚地告诉你,git restore <file> 可以丢弃工作区的修改:

$ git restore README.txt
$ git status
On branch master
nothing to commit, working tree clean

可以看到那些修改已经被撤消了。

2、取消暂存的文件

这次你修改了两个文件并且想要将它们作为两次独立的修改提交, 但是却意外地输入 git add * 直接暂存所有的文件修改。如何将其中一个取消暂存呢?

先执行git status命令看下情况:

$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   Design/System A.docx
        modified:   README.txt

在 “Changes to be committed” 文字正下方,提示使用 git restore –staged <file> 来取消暂存。 所以,我们可以这样来取消暂存 README.txt文件:

$ git restore --staged README.txt
$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   Design/System A.docx

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   README.txt

此时,可以看到README.txt文件已经出现在了“Changes not staged for commit”下面,表示未暂存。

3、覆盖上一次提交

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交。这个命令会将暂存区中的文件提交,并用新的提交信息覆盖上一次的提交信息。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令), 那么快照会保持不变,而你所修改的只是提交信息。

例如,我们先执行git log查看提交信息:

$ git log --oneline
57c5b17 (HEAD -> master) 添加设计文档
aeb65f4 添加需求文档
2c97086 修改README.txt文件
a235818 添加readme文件

可以看到,上一次提交信息为:添加设计文档。

现在版本库中有一份文件,虽然已暂存了,但是还未提交,你想把它也放到上一次提交里面,作为一个记录存在版本库里。你就可以通过git commit --amend实现:

$ git commit --amend -m "添加设计文档2"
[master 1d7505f] 添加设计文档2
 Date: Thu Sep 2 15:08:25 2021 +0800
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Design/System A.docx
 create mode 100644 Design/System B.docx

我们再执行git log查看下提交历史:

$ git log --oneline
1d7505f (HEAD -> master) 添加设计文档2
aeb65f4 添加需求文档
2c97086 修改README.txt文件
a235818 添加readme文件

可以看到,上一次提交信息已经被修改掉了,且没有产生新的提交记录。

所属专题:

本文原创,作者:Modeler。
如需转载,请注明出处:https://modelbaba.com/version-control/786.html

相关文章

换一批