Git撤回操作之一

Posted 取个名字真的很难

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git撤回操作之一相关的知识,希望对你有一定的参考价值。

  在我这里,我把撤回分两种一种是还没有commit,一种是commit之后。我先介绍第一种。

一、commit之前的撤回

  有两种情况。

       1.add操作之前,也就是还没提交到暂存区(index)

       以下为操作步骤:

       a.读取2.txt中的内容。

$ cat 2.txt
111

  b.将2.txt中的内容进行更改

$ echo "222" > 2.txt

  c. 查看是否已经更改

$ cat 2.txt
222

  已经更改为“222”。

      d.查看状态

$ git status
# On branch dev
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   2.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

  Git提示2.txt已经被修改了,用add操作可以提交到暂存区,待commit。或者使用checkout来放弃这次更改。

      e.进行撤回操作

$ git checkout 2.txt

  f.查看状态

$ git status
# On branch dev
nothing to commit, working directory clean

  g.查看是否取撤销更改

$ cat 2.txt
111

  可以看到,我们已经是将2.txt的操作已经撤回。其中,你修改2.txt是立即生效的。直接在文件夹中打开文档和cat命令打开是一样的。

  同时,需要注意的就是,因为没有进行commit操作,因此也不会产生log。

      2.add操作之后,但是还没有commit

      其实,就是已经添加到了暂存区(index),但是还没有提交到本地仓库(repository)。

      以下是实验过程。

      a.查看2.txt的内容,

$ cat 2.txt
111

   b.更改2.txt中的内容为“222”

$ echo "222" > 2.txt

   c.查看2.txt中的内容   

$ cat 2.txt
222

  已经被更改为“222”了。

 d. 添加到暂存区(index)

$ git add 2.txt

  e.查看状态

$ git status
warning: LF will be replaced by CRLF in 2.txt.
The file will have its original line endings in your working directory.
# On branch dev
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   2.txt

 Git提示,使用git reset HEAD 命令使文件去除暂存区。

  f.根据提示,进行reset HEAD 操作

$ git reset HEAD 2.txt
warning: LF will be replaced by CRLF in 2.txt.
The file will have its original line endings in your working directory.
Unstaged changes after reset:
M       2.txt

  g.查看2.txt的内容(还是没有更改回来,再查看状态)

$ cat 2.txt
222

  h.查看状态

$ git status
# On branch dev
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   2.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

  i.根据提示进行checkout操作,并查看2.txt内容以及状态

$ git checkout 2.txt

$ cat 2.txt
111

$ git status
# On branch dev
nothing to commit, working directory clean

  可以从上面的操作结果看出来,当已经添加到了暂存区之后,需要进行撤回需要有两步操作,先进行reset HEAD操作,然后再进行checkout操作,就可以回到原始状态了。

      其实,Git已经非常友好了,只要看的懂英文,上面都是有提示,教你怎么撤回的。鉴于篇幅问题,我这里第一种撤回方式就先介绍到这里,第二种另起一篇进行讲解。

  

  

以上是关于Git撤回操作之一的主要内容,如果未能解决你的问题,请参考以下文章

Git远程仓库 复制到另一个远程仓库 并保留commit信息。关于Git代码提交到远程仓库怎么撤回。.gitignore。git pull 时提示为何需要merge操作如何退出

git 撤回操作(IDEA中,撤回已经commit未push的)

Git撤回已经推送(push)至远程仓库提交(commit)的版本

intellij idea怎么撤回

VSCode自定义代码片段——git命令操作一个完整流程

撤回提交到 gitlab 上的代码