以下脚本用于生成多分支的git log,通过git log --oneline --decorate --graph --all查看分支提交及合并示意图。
git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st status[ -a git-branch-test.git ] && rm -rf git-branch-test.git[ -a git-branch-logs ] && rm -rf git-branch-logsgit init --bare git-branch-test.gitgit clone git-branch-test.git git-branch-logscd git-branch-logsecho v1 > v1.txtgit add -Agit commit -m v1-mastersleep 2sgit checkout -b br1git branchecho v2 > v2.txtgit add -Agit commit -m v2-br1sleep 2sgit branchgit checkout -b br2echo v3 > v3.txtgit commit -m v3-br2sleep 2sgit add -Agit commit -m v3-br2sleep 2sgit checkout -b br3echo v4 > v4.txtgit add v4.txtgit commit -m v4-br3sleep 2sgit checkout mastergit merge br3 -m "merge br3 into master"git checkout br3echo v5 > v5.txtgit add -Agit commit -m v5-br3sleep 2sgit checkout masterecho v6 > v6.txtgit add -Agit commit -m v6-mastersleep 2sgit checkout br1echo v7 > v7.txtgit add -Agit commit -m v7-br1sleep 2sgit checkout masterecho v8 > v8.txtgit add -Agit commit -m v8-mastersleep 2secho v9 > v9.txtgit add -Agit commit -m v9-mastersleep 2sgit checkout br2echo v10 > v10.txtgit add -Agit commit -m v10-br2sleep 2secho v11 > v11.txtgit add -Agit commit -m v11-br2sleep 2secho v12 > v12.txtgit add -Agit commit -m v12-br2sleep 2sgit checkout br3echo v13 > v13.txtgit add -Agit commit -m v13-br3sleep 2sgit checkout br1echo v14 > v14.txtgit add -Agit commit -m v14-br1sleep 2secho v15 > v15.txtgit add -Agit commit -m v15-br1sleep 2sgit checkout mastergit merge br3 -m "merge br3 into master"git merge br1 -m "merge br1 into master"git merge br2 -m "merge br2 into master"git log --oneline --decorate --graph --all |
以上脚本运行完成之后生成命令行的结果如图所示,可以通过结果来查看分支版本的合并衍进历史。
gitk中的显示结果:
sourceTree中的显示结果:
如果想按照提交时间顺序查看分支历史,可以使用以下命令:
git log --oneline --decorate --graph --all --date-order |
使用git log查看单个文件的提交历史并显示diff:
git log -p filename |
或者使用下面这个命令:
git log --follow -p -- filename |
说明
--follow可以跟踪文件的重命名。-p可以跟踪文件内容变化。
常用别名配置
在~/.gitconfig中加入以下配置,或者使用git config --global alias.** "***"命令修改配置:
[alias] ls = log --graph --pretty=format:'%C(cyan)%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' ll = log --pretty=format:'%C(yellow)%h %C(green)| %C(white)%ad %C(green)| %C(blue)%>(15,trunc)%an %C(green)| %C(green)%d %C(reset)%s' |
然后使用git ll或者git ls查看日志历史,使用别名可以避免影响原来的git log命令的显示方式。
帮助手册
git log命令手册:
git help log |