乐者为王

Do one thing, and do it well.

Git笔记之log

最简单的查看开发日志的命令是git log。如果你觉得git log给出的信息太单薄,那么可以使用git log -p,它不但会给出非常详细的开发日志,而且还会显示每次提交实际修改的内容。

git log支持很多的参数,可以将这些参数结合起来使用。下面是经常使用的一些参数:

1
2
3
4
5
6
7
-–name-only  # 只显示变更文件的名称
-–oneline    # 将提交信息压缩到一行显示
-–graph      # 显示所有提交的依赖树
-–reverse    # 按照逆序显示提交记录(最先提交的在最前面)
-–since      # 显示某个日期之后发生的提交
-–until      # 显示某个日期之前发生的提交
--decorate   # 显示每个commit的引用

如果你曾经与很多小伙伴工作在同一个分支上,也许会有这样的经历,master分支上的大量合并同步到你当前的分支。这使得我们很难分辨哪些变更是发生在master分支,哪些变更是发生在当前分支,且尚未合并到master分支。可以使用git log --no-merges master..查看尚未合并的变更。其中--no-merges选项表示着只显示没有合并到任何分支的变更,master..选项表示只显示没有合并到master分支的变更。

如果想查看文件中指定位置的变更怎么办?可以使用以下命令:

1
git log -L 1,1:<path>  # -L选项告诉Git只要输出指定文件中指定行的变更日志。

你还可以通过如下命令来定位具体的历史记录:

1
2
3
git log v3..v7                 # 显示v3之后直至v7的所有历史记录
git log v3..                   # 显示所有v3之后的历史记录
git log -–since="2 weeks ago"  # 显示2周前到现在的所有历史记录

如果这些都不够好用的话,还有一个--pretty选项,可以用来创建高级的自定义输出。譬如,你可以使用--pretty=raw查看日志的原始信息。

Comments