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

我想按日期(而不是时间)订购一些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 +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