git
  • 安装教程
  • 本地仓库
    • 工作区与版本库
    • 版本管理
      • 创建版本库
      • 提交修改
      • 撤消修改
      • 删除文件
    • 分支管理
      • 创建分支
      • 合并分支
      • 删除分支
    • 标签管理
      • 创建标签
      • 删除标签
  • 远程仓库
    • 初始化远程库
    • 克隆远程库
    • 多人协作
    • 远程分支
    • 远程标签
    • 关于origin
    • 关于upstream
  • 关于config
    • 关于name与email
    • window上的凭证
  • git常用命令
  • github的使用
  • 容器跑gogs
  • 项目版本管理
    • GitFlow
Powered by GitBook
On this page
  • 撤消工作区的修改
  • 撤消暂存区的修改
  • 版本回退

Was this helpful?

  1. 本地仓库
  2. 版本管理

撤消修改

撤消工作区的修改

假设learngit仓库下有一个readme.txt文件,内容如下

$ cat readme.txt
git is a version control system
git is free software

编辑readme.txt文件,添加一行内容,如下

$ cat readme.txt
git is a version control system
git is free software
append a new line

然后,我们查看状态

$ git status
# On branch master
# 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:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

`Changes are not staged for commit:`说明工作区有了修改,却没有添加(statged)到暂存区

`modified: readme.txt` 说明修改的文件为readme.txt

接下来,我们使用命令来撤消工作区中的修改

$ git checkout -- readme.txt

然后,我们再用`git status`命令来查看状态

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

可以看出,工作区是干净的(working directory is clean),即工作区的修改已经被撤消了

撤消暂存区的修改

假设learngit仓库下有一个readme.txt文件,内容如下

$ cat readme.txt
git is a version control system
git is free software

编辑readme.txt文件,添加一行内容,如下

$ cat readme.txt
git is a version control system
git is free software
append a new line

然后,把修改添加到暂存区

$ git add readme.txt

此时,查看状态

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#    modified:   readme.txt
#

`Changes to be committed:` 说明修改已经添加到暂存区了,等待被commit

接下来,执行`git reset HEAD`命令来撤消暂存区的修改,重新放回工作区

$ git reset HEAD readme.txt
Unstaged changes after reset:
M    readme.txt

再来查看状态

$ git status
# On branch master
# 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:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

此时修改已经回退到工作区了,如果要继续撤消工作区的修改,则按照上面的步骤完成即可

版本回退

首先,我们对readme.txt进行两次提交,第一次是创建readme.txt文件并添加前两行内容,第二次是在文件尾部再添加一行内容。

查看文件内容,如下

$ cat readme.txt 
git is a version control system
git is free software
append a new line

查看提交历史记录

$ git log --pretty=oneline
a6f3333f4ac325f35cc01c8127b0338263448ef3 append a new line
1bed8c6738c83569df624b86888718be9f1580f6 add readme.txt

最前面的长字符串是每一次提交的一个hash值。可以看出,有两次提交,且第一次提交的message为"add readme.txt",说明第一次提交是创建并初始化了readme.txt文件;第二次提交是追加了第三行。

接下来,我们让版本回退到第一次提交后的状态,执行以下命令即可

$ git reset --hard 1bed8c
HEAD is now at 1bed8c6 add readme.txt

注意,回退到某个版本并不需要把那次提交的hash值写完,一般前六位就够了。

然后,我们再查看readme.txt的内容,已经是第一次提交后的内容了

$ cat readme.txt
git is a version control system
git is free software

此时,我们再来查看提交记录,发现已经只有一次提交了

$ git log --pretty=oneline
1bed8c6738c83569df624b86888718be9f1580f6 add readme.txt
Previous提交修改Next删除文件

Last updated 5 years ago

Was this helpful?