显示 git pull --rebase 后获取的提交

问题描述 投票:0回答:2

有没有办法在执行

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
显示的内容。
2) 如何在
git pull --rebase
之后查看所有新“传入”提交的日志。

git rebase git-diff pull diffstat
2个回答
14
投票

实际上,

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}
部分中的大括号。
    


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
    

© www.soinside.com 2019 - 2024. All rights reserved.