在git pull--rebase之后显示获取的提交
是否有一种方法可以查看在执行git pull--rebase后从远程存储库中拉入了哪些提交 换句话说:在git pull--rebase之后显示获取的提交,git,rebase,pull,Git,Rebase,Pull,是否有一种方法可以查看在执行git pull--rebase后从远程存储库中拉入了哪些提交 换句话说:git pull将在末尾显示已更改文件的摘要(如git diff--stat)Git pull--重设基址不会。如果可能的话,我怎样才能看到这些信息 我知道,在正常的git拉取之后,或者通过使用git log master..origin/master--stat或类似工具比较本地和远程分支,首先手动执行git抓取,这是可能的,但在git拉取--rebase之后,这不起作用,除非我做错了什么 为
git pull
将在末尾显示已更改文件的摘要(如git diff--stat
)<代码>Git pull--重设基址不会。如果可能的话,我怎样才能看到这些信息
我知道,在正常的git拉取之后,或者通过使用git log master..origin/master--stat
或类似工具比较本地和远程分支,首先手动执行git抓取
,这是可能的,但在git拉取--rebase
之后,这不起作用,除非我做错了什么
为了澄清,我的问题分为两部分:
1) 如何在git pull--rebase
之后查看diffstat(已更改文件的摘要),类似于git pull
显示的内容。
2) 如何查看git pull--rebase之后所有新“传入”提交的日志,您可以尝试(在git pull--rebase之后)访问:
(见附件)
也就是说,'s更容易,因为它将为您完成这一步,--stat
自动传递给git fetch
,实际上,git rebase
一直都有这个功能(从1.6.开始)。请记住,git pull
只是git fetch
,后跟git merge
或git rebase
(根据各种选项和设置的指示)。也就是说,git pull
执行一对底层git操作
在您完成git pull
之后,它不起作用的原因是git pull
实际上是一对操作,如果您只做了一对,那么第二次git fetch
可能不会带来新的更改,因此没有什么新的内容可显示。如果要使用reflog历史记录将项目重置为第一对操作之前的状态,则第二对操作将显示一些内容
您可以(如我所见)使用您自己的回流日志获取关于上游或本地分支的事后报告。但是,假设您希望在下一次的git pull
中看到这一点,即使这样做了rebase
,这就是一组狡猾的git默认值的来源
如果手动将--stat
添加到git pull
行,则pull
脚本会将此选项传递到git merge
或git rebase
(无论运行哪一个)。如果不使用此选项,git将依赖默认选项
git merge
的默认--stat
选项是配置的merge.stat
,中的设置,默认为True。git-rebase
的默认--stat
选项是配置的rebase.stat
,中的设置,默认为False
让我重复一遍,因为这很奇怪也不明显(我之所以发现这一点,是因为你的问题——我通常避免使用git pull)
用于合并的默认--stat
选项为True
,而重设基础的默认--stat
选项为False
如果您自己设置默认值,则可以显示stat输出
或者,您可以将显式的--stat
传递给git pull
请注意,您还可以设置pull.rebase
(设置为True
,表示默认为重定基址,或preserve
,表示默认为使用--preserve
重定基址),或branch.name.rebase
(设置为True
或preserve
),以使git-pull
使用--rebase
。这与是否将--stat
作为pull
参数提供无关
编辑:VonC的答案不见了(至少现在是这样),但在各种评论中都有一些。事后使用的技巧是,当git fetch
更新origin/develope
时,您自己的reflog现在包含一个origin/develope{1}
:在git fetch
更新它之前,您自己先前的origin/develope
值。因此,您可以选择随origin/develope@{1}..origin/develope
一起提供的修订集。用--stat
对这两个变量进行微分将得到所需的输出。请注意,您可能需要引用@{1}
部分中的花括号,也可能不需要引用,具体取决于您的特定外壳。如果您将主控盘
重定基址为原点/主控盘
,则范围主控盘..原点/主控盘
将为空;因此,git log master..origin/master--stat
不输出任何内容是正常的。此外,git diff--stat master{1}
(在git pull--rebase
之后)不就是这样吗?我不得不在“develope{1}”周围加上引号,否则它会去掉大括号并失败,但是是的,这显示了与“git pull”或“git pull--rebase--stat”相同的输出(参见torek的答案)!我不知道“{1}”是什么意思,但是….develope{1}
的意思是“在上次移动之前,develope
指向哪里”;请看下面的内容。如果torek的答案完全解决了你的问题,考虑接受它。我删除了我的答案,因为任何Git log x.y- STAT都不起作用。@ VonC,实际上,你的答案,加上Jubobs的回答将我引入@ { 1 }符号,我可能已经找到了我的问题的第2部分的解决方案。事实上,您的git日志头..ORIG_HEAD
或其他方法并不能满足我的要求,但是git log“origin/develope@{1}”。origin/develope
可以!仅输出来自源代码的新提交:-)是@{}
的同义词,与HEAD@{}
?@Jubobs是,因为git 1.8.5+():
@\{<n>\}, e.g. @{1}
git log "origin/develop@{1}"..origin/develop