git 文件回滚,比较差异命令拾遗

来源:互联网 发布:linux vim 替换字符串 编辑:程序博客网 时间:2024/06/16 01:51

    • git reset命令
      • 提交层面git reset commitId
      • 文件层面
    • git checkout命令
      • 提交层面git checkout branchName
      • 文件层面git checkout commitId file
      • git checkout 和git reset 的区别
    • git revert
    • git diff
      • 比较工作目录与暂存区文件
      • 比较暂存区和提交历史的文件
      • 比较工作目录和提交历史的文件
      • 比较两个分支的最新提交历史
      • 简要显示比较记录
    • 参考来源

首先先再梳理下git仓库的组成,方便接下来命令的介绍。
在本地,git仓库分为三个部分,工作目录(workspace/working directory),暂存区(index/stage),和提交历史(local reposiotry/commit history/HEAD)
附图说明一般git提交流程,文件在这三个部分的流转

([add、commit、push、fetch、push、diff文件流转])

git reset命令

可对提交或者对文件操作

提交层面:git reset commitId

可令当前分支下提交历史的head指针回退到指定的commit节点

文件层面:

  1. git reset <file>:可令暂存区的指定文件修改移除掉(不影响工作目录)
  2. git reset <commitId> [file]:可令指定提交记录的指定文件恢复至暂存区

git checkout命令

可对提交或者对文件操作

提交层面:git checkout branchName

可令HEAD指针从当前分支切换到指定分支的最新提交

文件层面:git checkout <commitId> [file]

可令当前分支指定提交历史的文件还原至工作目录(不影响add到暂存区的修改)

git checkout 和git reset 的区别

git reset 会令提交历史丢掉

git revert

相比于reset,revert保留提交记录,可用于在公共分支上回退提交记录
revert只有提交层面的用途:git revert commitId

git diff

用于不同部分,不同分支比较文件的不同

比较工作目录与暂存区文件

git diff (不加参数)

比较暂存区和提交历史的文件

git diff –cached/staged

比较工作目录和提交历史的文件

git diff HEAD

比较两个分支的最新提交历史

git diff branch1 branch2

简要显示比较记录

git diff –stat

参考来源

  1. 代码回滚:git reset、git checkout和git revert区别和联系
  2. git diff命令详解
原创粉丝点击