【三】Git操作指南:数据回溯和删除数据恢复

【三】Git操作指南:数据回溯和删除数据恢复

数据回溯

文件恢复到最后一次提交时的状态

就比如说我们修改 init.txt 这个文件,但是发现修改还不如不改的时候。我们可以让该文件回到最后一次提交时的状态。

 git checkout init.txt
 git restore init.txt
  • 这两个命令都能让 init.txt 回到最后一次提交时的状态
  • 不过这个命令在当你将其加入暂存区时单单执行将没有效果,因为它是以暂存区的文件内容来恢复工作区域的对应的文件的。

工作区域所有修改文件回到最后一次提交状态

 git checkout .
 git restore .
  • 同样这个命令对已经添加到暂存区的文件无效。理由和上面一样。不会删除工作区域文件

将添加到暂存区中的文件回到最后一次提交状态

首先我们得将暂存区内容恢复到最后一次提交的状态

 git restore --staged filename (or .)
  • 这个命令能够将暂存区的内容,回到最后一次提交的状态。

然后执行下面命令,将工作区对应的文件恢复到最后一次提交的状态

 git restore filename (or .)
 git checkout filename (or .)

重置到某个版本

软重置

 git reset --soft HEAD~1(1 是变量,后退多少版本数)
  • 当执行上面的命令过后,我们在查看提交日志 git log 会发现最后一次次的提交已经消失了。 这是一个软重置,因为我们没有提交的修改文件仍在暂存区,直接执行 git commit -m 'submit' 还能够提交。不会删除,不会修改工作文件夹文件

默认重置

 git reset HEAD~1
  • 当执行上面的命令过后,我们在查看提交日志 git log 会发现指定的最后一次的提交已经消失了。 这是一个默认重置,因为暂存区中没有提交的文件也被从暂存区删除了。但是工作文件夹下的文件不会删除。

硬重置

 git reset --hard HEAD~1
  • 执行上面的命令。会删除暂存区内容,删除工作区文件夹。完全的和回滚的版本文件目录结构相同,暂存区相同等。会修改和删除工作文件夹下文件

删除没有在暂存区中的文件

 git clean -dn
  • 此命令将列出将要删除的文件列表
git clean -df
  • 将没有保存在暂存区中的文件删除。

数据恢复

保存暂未提交的数据然后回滚

当我们不想提交数据时,但又不得不回到某个提交状态时

git stash
git stash push -m "third feature added"
  • 这个命令可以存储当前工作进度。第二个命令和添加注释信息
git stash list
  • 此命令可以查看存储的工作进度列表
  • stash@{0}: On master: third feature added
    stash@{1}: WIP on master: 5be9349 test
    stash@{2}: WIP on master: 5be9349 test
    stash@{3}: WIP on master: eaaf828 initial commit
    
git stash apply
  • 此命令会应用进度列表第一个进度
git stash pop index
  • index: 时存储工作进度分配的列表
  • 此命令会将指定的index保存的进度恢复,然后将其从进度列表中删除
git stash clear
  • 清空进度列表

恢复已经就删除的分支或分支

查看已经提交或保留列表中已经删除的信息操作记录

  • git reflog
    
    • 此命令能查我的操作日志信息,里面的hash有用,可以用来恢复
  • 假设某个已经删除的分支的hash值是 a8a2206
    • # 以此分支为模板,创建头分离分支
      git checkout a8a2206
      # 在该头分离分支上执行创建分支命令,保存分支
      git checkout -b a8a2206
      
  • 假设某个已经删除的提交的hash值是 e2b7724
    • git reset --hard e2b7724
      
    • 此命令可以回滚到该提交
github·git
120 views
Comments
登录后评论
Sign In