0

git cherry命令非常适合查看两个分支之间发生了什么提交。但是,默认情况下,它只会为您提供提交 ID 列表 - 信息量不大。

$ git cherry master dev # Commits in "dev" since it forked from "master"
+ 54408ddc6403376c638d5bfc94c033ab655da7b3
+ 68bc4277954b7de4c95881904de22f1d443366ae
+ d74ab86eee75a8e5c1a835a6e69e74c01d4186e8

如何获得包含更多信息的相同列表?

4

2 回答 2

2

git cherry您可以通过另外两个命令管道输出来实现此目的:

首先使用sed删除+每行开头的 以保留原始提交 ID:

$ git cherry master dev | sed 's/^+ //'
54408ddc6403376c638d5bfc94c033ab655da7b3
68bc4277954b7de4c95881904de22f1d443366ae
d74ab86eee75a8e5c1a835a6e69e74c01d4186e8

现在使用xargs --max-lines=1将每个提交 ID 传递给git log -1,然后可以显示有关每个提交的其他信息:

$ git cherry master dev | sed 's/^+ //' | xargs --max-lines=1 git log -1 --pretty=format:"%h [%ad] %an : %s" --date=short
54408dd [2013-10-09] Robin Winslow : Update Binaries submodule
68bc427 [2013-10-09] Robin Winslow : Update reference dependencies for Website
d74ab86 [2013-10-09] Robin Winslow : Remove non-exisent files from Website project

注意:您可以定制--pretty=format:"%h [%ad] %an : %s" --date=short零件以获得您喜欢的任何输出git log

于 2013-10-21T08:42:56.627 回答
1

您可以使用git cherry -v master dev

它将显示带有提交哈希的提交消息。

于 2019-08-20T09:28:56.250 回答