Git

Git 三棵树结构

这里的树不是准确地代表数据结构,可以简单理解为 “文件的集合”

HEAD 上一次提交的快照,下一次提交的父节点

Index 下一次提交的快照

Working Directory 本地工作目录,接下来简称 work

一个简单的操作循环如下:

Work stage files --> Index commit --> HEAD checkout file/project --> Work

HEAD 相当于一个指针,始终指向当前分支,并保证分支引用指向最顶端的 commit 快照

每次 commit 形成一个快照,链接于当前分支的最顶端快照,并移动 HEAD 指向的分支指向这个快照

git reset

  • --soft,第一级:移动 HEAD

reset 移动 HEAD 指向的分支,使分支指向上一个快照,相当于撤销了上一次的 commit

  • --mixed,第二级:更新索引(默认级别,省略参数)

在第一步基础上,取消暂存的内容,相当于撤销了 commit 和 add 两次操作

  • --hard,第三级:更新工作目录

危险 在第二步基础上,撤销了本地工作的更新内容,强制覆盖了本地目录的文件

  • git reset file.txt 是 git reset --mixed HEAD file.txt 的简写形式,本质是将 file.txt 复制到索引当中

  • git reset eb43f file.txt 将文件恢复到 commit eb43f 的版本

  • git status 推荐使用 git reset 来取消暂存

git checkout

与 git reset 一样,也操纵三棵树

  • 带路径参数

危险

  • 不带路径参数

git stash

git diff

显示本地与暂存区的区别,即尚未暂存的更新内容

--cached 或 --staged 显示暂存区与 HEAD 内容的区别,即要被提交的更新内容

git rm

当文件已被暂存时无法直接 rm,-f 强制删除 使暂存区与本地同时删除,--cached 只删除暂存区的文件信息

git commit

--amend 修改提交信息 重新提交 覆盖上一次提交,用于遗落文件或描述信息补充等

git log

-p 显示每次提交的内容,

-(n) 显示最近的 n 条日志,如 -p -2 显示最近两次提交的内容

--stat 显示提交的统计信息,如加减或更改的文件数量

--pretty= 以指定格式显示信息,可选值包括 online short full format 等,其中 format 通过自己指定格式来输出信息

--graph 以 ASCII 图形展示分支 合并历史

//组合使用实例1: git log --pretty=format:"%h %s" --graph

--since= 和 --after= 限定起始时间

--until= 和 --before= 限定截止时间

时间有多种表现形式,如 2018.07.22 或 06-22 或 3.days 2.minute等

//组合使用实例1: git log --since=2017.09.17 --until=07.23

--author 指定作者,--committer 指定提交人,--grep 指定提交时 -m 信息中的关键字

//当两者同时使用得到并集,再加 --all-match 得到交集

-S 指定提交的文件中的文字内容中的字符串, 如方法名、类名、注释等字符串

你可能感兴趣的:(Git)