2017-02-11 106 views
2

我有一個別名爲git log twoline。git log漂亮格式

[alias] 
    l  = "log --graph --date=relative --decorate --abbrev-commit --pretty=format:'%h - %aD (%ar)%d%n %s - %an'" 

它很好地工作。

輸出#1:

$ git l -2 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy 
* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy 

然而,隨着--name-status,我可以在作者名後看到的管道。

輸出#2:

$ git l -2 --name-status 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy| 
| M README.md 
| A rm.Extensions/BitSet.cs 
| M rm.Extensions/Properties/AssemblyInfo.cs 
| M rm.Extensions/rm.Extensions.csproj 
| A rm.ExtensionsTest/BitSetTest.cs 
| M rm.ExtensionsTest/rm.ExtensionsTest.csproj 

* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy| 
| M rm.Extensions/GraphExtension.cs 
| M rm.Extensions/Wrapped.cs 
| M rm.Extensions/WrappedExtension.cs 
| M rm.Extensions/rm.Extensions.csproj 

如果我在最端部(以便...%an%n)添加%n輸出#1變成3線而不是2

我想要--name-status看起來像這樣最好,但文件列表之前的額外換行是好的:

$ git l -2 --name-status 
* 714a14e - Fri, 18 Nov 2016 00:04:19 -0800 (3 months ago) (HEAD -> dev, github/dev) 
| Adding BitSet implementation. - hippy 
| M README.md 
| A rm.Extensions/BitSet.cs 
| M rm.Extensions/Properties/AssemblyInfo.cs 
| M rm.Extensions/rm.Extensions.csproj 
| A rm.ExtensionsTest/BitSetTest.cs 
| M rm.ExtensionsTest/rm.ExtensionsTest.csproj 
| 
* 87dce5f - Sat, 10 Dec 2016 12:50:40 -0800 (9 weeks ago) 
| Turning on recommended code analysis rules. - hippy 
| M rm.Extensions/GraphExtension.cs 
| M rm.Extensions/Wrapped.cs 
| M rm.Extensions/WrappedExtension.cs 
| M rm.Extensions/rm.Extensions.csproj 

這看起來像一個錯誤,因爲我找不到pretty formats man page中的任何東西。

$ git version 
git version 2.11.0.windows.1 

我該如何解決這個問題pretty format

注意:我在這裏提交了一個錯誤(bug link),並且會相應地更新票證。

回答

0

這顯然是一個錯誤(垂直欄位於錯誤的位置;請注意--name-status項下的間隔)。幸運的是,有一個簡單的解決方法:使用tformat而不是普通的format。區別在於tformat如果需要添加換行符,而不是如果不需要。

注意--format(可用自Git版本1.6.3)本質上是--pretty=tformat:的代名詞,因爲大多數面向用戶的代碼通常應使用tformat

+0

我曾嘗試'tformat'。由於可讀性,我認爲'format'與'%n'結尾比'tformat'更好。我會用'git log --graph --decorate --oneline',但它不輸出作者,日期。我想我會在此期間報告錯誤。 – hIpPy

+0

但是正如你所指出的那樣,當你不需要它時,顯式的'%n'('%an%n')會放入一個換行符,以及當你這樣做時(「輸出#1變爲3行...」 )。有了'tformat',它不會。 – torek