Git 在部分线路上排序,在领带上保持秩序
我想按日期(而不是时间)订购一些git日志输出 不幸的是,似乎无法仅按某些字符进行排序,而使用Git 在部分线路上排序,在领带上保持秩序,git,bash,sorting,git-log,Git,Bash,Sorting,Git Log,我想按日期(而不是时间)订购一些git日志输出 不幸的是,似乎无法仅按某些字符进行排序,而使用sort忽略该行的其余部分。到目前为止,我尝试的是: 输入:git-log.txt git log --date-order --reverse --show-all --pretty="%ai#%h %s" 2013-08-22 09:54:12 +0200#f03fec1 G 2013-08-21 10:43:57 +0200#c026cd6 A 2013-08-21 10:49:58 +02
sort
忽略该行的其余部分。到目前为止,我尝试的是:
输入:git-log.txt
git log --date-order --reverse --show-all --pretty="%ai#%h %s"
2013-08-22 09:54:12 +0200#f03fec1 G
2013-08-21 10:43:57 +0200#c026cd6 A
2013-08-21 10:49:58 +0200#4630c3f B
2013-08-21 11:14:42 +0200#6e7141d C
2013-08-21 13:02:59 +0200#23ab0a8 D
2013-08-21 10:39:23 +0200#06b83f7 E
2013-08-21 14:10:16 +0200#f53384e F
2013-08-20 16:22:33 +0200#12591fb Z
纳伊夫:包括日期在内,这将是完美的排序
sort -k 1.1,1.10 git-log.txt
通过解决与不存在柱的连接进行欺骗
sort -k 1.1,1.10 -k 200 git-log.txt
欺骗它将整行解释为不存在分隔符的单列
sort -k 1.1,1.10 -t "^" git-log.txt
在所有情况下,输出为:
2013-08-20 16:22:33 +0200#12591fb Z
2013-08-21 10:39:23 +0200#06b83f7 E
2013-08-21 10:43:57 +0200#c026cd6 A
2013-08-21 10:49:58 +0200#4630c3f B
2013-08-21 11:14:42 +0200#6e7141d C
2013-08-21 13:02:59 +0200#23ab0a8 D
2013-08-21 14:10:16 +0200#f53384e F
2013-08-22 09:54:12 +0200#f03fec1 G
我需要(见提交E的位置)
如何教sort
在领带上保持排序顺序?
我可以在输出中添加任何所需的字符…您似乎正在寻找
-s
选项进行排序
:
-s, --stable
stabilize sort by disabling last-resort comparison
说
相反。请注意sort--debug选项有助于解决此问题(在本例中,它会使第二个有问题的排序变得明显)我现在感觉自己很笨。已阅读手册页2个小时,忽略了它:-(谢谢
-s, --stable
stabilize sort by disabling last-resort comparison
sort -k 1.1,1.10 -t "^" -s git-log.txt