git 中的颜色和作者登录 Windows?

Colors and authors in git log on Windows?

使用 Windows 10 Pro 64 位我找到了一个很好的命令来列出 Git 历史,显示 HEAD、分支和标签作为突出的颜色。不错!

git log --oneline --decorate --graph --all

但我没有看到任何日期或作者!所以我找到了另一个不错的命令:

git log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

也很好---现在我可以看到日期和作者了。但是所有漂亮的颜色都消失了(图形除外)。 HEAD、分支和标签都与日志的其余部分颜色相同,很难辨认出来。

如何在保留日期和作者的同时恢复提交指针的颜色?

这应该能满足您的需求:

git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all

Taken from this post

添加 git log --decorate --graph 它将显示分支、标签等

--decorate [=short|full|no]

Print out the ref names of any commits that are shown. If short is specified, the ref name prefixes refs/heads/, refs/tags/ and refs/remotes/ will not be printed. If full is specified, the full ref name (including prefix) will be printed. The default option is short

--graph

Draw a text-based graphical representation of the commit history on the left hand side of the output. This may cause extra lines to be printed in between commits, in order for the graph history to be drawn properly


For windows

format:<string>

The format: format allows you to specify which information you want to show. It works a little bit like printf format, with the notable exception that you get a newline with %n instead of \n.

E.g, format:The author of %h was %an, %ar%nThe title was >>%s<<%n would show something like this:

The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<

您可以使用日志格式标志

# print out the git log
git log 

# print out the branches split and merge points
--graph 

# use the --pretty=format:... to choose which data to extract from the log
# (commit) entry and print it out.

# Set colors with the %C<color> & %Creset for resetting back to the default color

The placeholders are:

%C(…): color specification, as described in color.branch.* config option; adding auto, at the beginning will emit color only when colors are enabled for log output (by color.diff, color.ui, or --color, and respecting the auto settings of the former if we are going to a terminal). auto alone (i.e. %C(auto)) will turn on auto coloring on the next placeholders until the color is switched again.

%C(…): color specification, as described in color.branch.* config option; adding auto, at the beginning will emit color only when colors are enabled for log output (by color.diff, color.ui, or --color, and respecting the auto settings of the former if we are going to a terminal). auto alone (i.e. %C(auto)) will turn on auto coloring on the next placeholders until the color is switched again.

%Cblue: switch color to blue
%Cgreen: switch color to green
%Cred: switch color to red
%Creset: reset color
%D: ref names without the " (", ")" wrapping.
%G?: show "G" for a Good signature,
"B" for a Bad signature,
"U" for a good, untrusted signature and
"N" for no signature
%GG: raw verification message from GPG for a signed commit
%GK: show the key used to sign a signed commit
%GS: show the name of the signer for a signed commit
%H: commit hash
%N: commit notes
%P: parent hashes
%T: tree hash
%aD: author date, RFC2822 style
%aE: author email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%aI: author date, strict ISO 8601 format
%aN: author name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%ad: author date (format respects --date= option)
%ae: author email
%ai: author date, ISO 8601-like format
%an: author name
%ar: author date, relative
%at: author date, UNIX timestamp
%b: body
%cD: committer date, RFC2822 style
%cE: committer email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%cI: committer date, strict ISO 8601 format
%cN: committer name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%cd: committer date (format respects --date= option)
%ce: committer email
%ci: committer date, ISO 8601-like format
%cn: committer name
%cr: committer date, relative
%ct: committer date, UNIX timestamp
%d: ref names, like the --decorate option of git-log(1)
%e: encoding
%f: sanitized subject line, suitable for a filename
%gD: reflog selector, e.g., refs/stash@{1}
%gE: reflog identity email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%gN: reflog identity name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
%gd: shortened reflog selector, e.g., stash@{1}
%ge: reflog identity email
%gn: reflog identity name
%gs: reflog subject
%h: abbreviated commit hash
%m: left, right or boundary mark
%n: newline
%p: abbreviated parent hashes
%s: subject
%t: abbreviated tree hash
%w([<w>[,<i1>[,<i2>]]]): switch line wrapping, like the -w option of git-shortlog(1).
%x00: print a byte from a hex code


On unix

  • 如果你使用基于 uxin 的 OS 你可以使用这个 .githelpers

Output of the .githelprs script:

您可以用 %C(auto)%C(reset) 包装您的格式字符串以自动为输出着色,如下所示:

%C(auto)<insert your formatting here>%C(reset)

因此,使用您提供的格式:

git log --pretty=format:"%C(auto)%h %ad | %s%d [%an]%C(reset)" --graph --date=short

它将使用 git 的默认颜色来表示分支(远程为红色,本地为绿色,HEAD 为青色等)和提交参考。