有没有办法在执行
git pull --rebase
后查看从远程存储库中提取了哪些提交?
换句话说:
git pull
将在最后显示更改文件的摘要(如git diff --stat
)。 Git pull --rebase
没有。如果可能的话,我怎样才能看到这些信息?
我知道在正常的
git pull
或首先执行手动 git fetch
后,通过使用 git log master..origin/master --stat
或类似工具比较本地和远程分支,这是可能的,但这在 git pull --rebase
后不起作用,除非我做错事...
澄清一下,我的问题分为两部分:
1) 如何在
git pull --rebase
之后查看 diffstat(更改文件的摘要),类似于 git pull
显示的内容。git pull --rebase
之后查看所有新“传入”提交的日志。
实际上,
git rebase
一直都有这个(嗯,从 1.6.something 开始)。请记住,git pull
只是 git fetch
后跟 git merge
或 git rebase
(根据各种选项和设置的指示)。也就是说,git pull
执行一对底层 git 操作。
完成
git pull
后不起作用的原因是,git pull
实际上是那一对操作,如果你只做了一对,那么你的第二个可能不会带来新的变化git fetch
,所以没有什么新内容可以展示。如果您要使用引用日志历史记录将项目重置为“第一对”操作之前的状态,则第二对操作将显示一些内容。
您可以(正如我所见VonC 已经指出的那样)使用您自己的引用日志获得有关上游或本地分支中发生的更改的事后报告。但想必你想在 next git pull
上看到这个,即使它确实是
rebase
,这就是一组偷偷摸摸的 git 默认值的用武之地。如果您手动将
--stat
添加到
git pull
行,pull
脚本会将此选项传递给 git merge
或 git rebase
(无论它运行哪一个)。如果您忽略此选项,git 将依赖于默认选项。
--stat
的默认
git merge
选项是配置的 merge.stat
中的设置,默认为 True。
--stat
的默认 git rebase
选项是您配置的 rebase.stat
中的设置,默认为 False。 让我重复一遍,因为它只是奇特且不明显(我只是因为你的问题才发现这一点 - 我自己通常会避免
git pull
)。
--stat
的默认
merge
选项是True
,但--stat
的默认rebase
选项是False
。
如果您自己设置默认值,则可以显示统计输出。
或者,您可以将显式
--stat
传递给
git pull
。请注意,您还可以设置
pull.rebase
(设置为
True
,表示默认为变基,或 preserve
,表示默认也使用 --preserve
变基),或 branch.name.rebase
(设置为 True
或 preserve
),使 git pull
使用 --rebase
。这与您是否提供 --stat
作为 pull
参数无关。:VonC 的答案已经消失(至少现在),但在各种评论中都有一些内容。事后使用的技巧是,当 git fetch
更新
origin/develop
时,您自己的引用日志现在包含一个
origin/develop@{1}
:您自己的 origin/develop
先前值,在 git fetch
更新之前。因此,您可以选择带有 origin/develop@{1}..origin/develop
的修订集。用 --stat
区分这两者将得到所需的输出。请注意,根据您的特定 shell,您可能需要或不需要引用 @{1}
部分中的大括号。git pull --rebase
之后)访问
引用日志: (请参阅
git rev-parse
指定修订)
@\{<n>\}, e.g. @{1}
您可以使用带有空引用部分的
@
构造来获取当前分支的
reflog 条目。 例如,如果您位于分支blabla
,则的含义与@{1}
相同。 这里blabla@{1}
origin/master@{1}
将引用
origin/master
之前
fetch
(因为 pull
= fetch
+ merge/rebase
)要查看获取的提交,OP Q-BiC
建议在评论中:
git log "origin/develop@{1}"..origin/develop
话虽这么说,torek
的解决方案更容易,因为它会为您处理该步骤,--stat
会自动传递到
git fetch
。