我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
当前回答
最后的-10表示最近10次提交。
使用预定义的git别名(hs - history的缩写):
git hs
由命令创建一次:
git config --global alias.hs "log --pretty='%C(yellow)%h %C(cyan)%cd %Cblue%aN%C(auto)%d %Creset%s' --graph --date=relative --date-order"
%h =缩写提交哈希 %cd =提交日期(格式尊重——date= option) %aN =作者名(respect .mailmap) %d = ref name %s = subject
附注:从Git v2.13.0开始,——decoration默认启用。
引用:
Git - Git -log文档 Git中作者和提交者的区别? GitHub如何使用Git的作者日期和提交日期
其他回答
为了显示我已经准备好执行的提交
git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F'\t' '{gsub(/[, ]/,"",$2);gsub(/HEAD/, "\033[1;36mH\033[00m",$2);gsub(/master/, "\033[1;32mm\033[00m",$2);gsub(/trunk/, "\033[1;31mt\033[00m",$2);print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}' | less -eiFRXS
输出如下所示:
ef87da7 2013-01-17 haslers (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers Refactor Frobble
815813b 2013-01-17 haslers (t)Add Wibble to Frobble
3616373 2013-01-17 haslers Add Foo to Frobble
3b5ccf0 2013-01-17 haslers Add Bar to Frobble
a1db9ef 2013-01-17 haslers Add Frobble Widget
其中第一列出现在黄色,'H' 'm'和't'在括号中显示的头部,主人和主干,并出现在他们通常的“装饰”颜色
这里有换行符,你可以看到它在做什么:
git log remotes/trunk~4..HEAD --date=short
--pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
| awk -F'\t' '{
gsub(/[, ]/,"",$2);
gsub(/HEAD/, "\033[1;36mH\033[00m",$2);
gsub(/master/, "\033[1;32mm\033[00m",$2);
gsub(/trunk/, "\033[1;31mt\033[00m",$2);
print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}'
我用别名“staging”:
git config alias.staged '!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"\t" "{gsub(/[, ]/,\"\",\$2);gsub(/HEAD/, \"\033[1;36mH\033[00m\",\$2);gsub(/master/, \"\033[1;32mm\033[00m\",\$2);gsub(/trunk/, \"\033[1;31mt\033[00m\",\$2);print \$1 \"\t\" gensub(/([\(\)])/, \"\033[0;33m\\\\\1\033[00m\",\"g\",\$2) \$3}"'
(有没有更简单的方法来避免这种情况?弄清楚需要逃脱的是什么有点棘手)
使用预定义的git别名,即:
$ git work
由命令创建一次:
$ git config --global alias.work 'log --pretty=format:"%h%x09%an%x09%ad%x09%s"'
https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases
或者用图形来表示:
$ git config --global alias.work 'log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all'
git log --pretty=format:'%h %ad %s%x09%ae' --date=short
结果:
e17bae5 2011-09-30 Integrate from development -> main nixon@whitehouse.gov
eaead2c 2011-09-30 More stuff that is not worth mentioning bgates@apple.com
eb6a336 2011-09-22 Merge branch 'freebase' into development jobs@nirvana.org
首先是固定宽度的内容。最不重要的部分——电子邮件域——是最后一个很容易过滤的部分。
请随意使用这个:
git log --pretty="%C(Yellow)%h %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s" --date=short -7
注意最后的-7,只显示最后7个条目。
看:
最后的-10表示最近10次提交。
使用预定义的git别名(hs - history的缩写):
git hs
由命令创建一次:
git config --global alias.hs "log --pretty='%C(yellow)%h %C(cyan)%cd %Cblue%aN%C(auto)%d %Creset%s' --graph --date=relative --date-order"
%h =缩写提交哈希 %cd =提交日期(格式尊重——date= option) %aN =作者名(respect .mailmap) %d = ref name %s = subject
附注:从Git v2.13.0开始,——decoration默认启用。
引用:
Git - Git -log文档 Git中作者和提交者的区别? GitHub如何使用Git的作者日期和提交日期