如何获取即将更新(或刚刚更新)的文件列表 git pull
所以我可以解析它们并在脚本中采取适当的措施?
接受的答案 这个看似相似的问题 告诉我,我可以获得一份提交列表
git fetch && git log master..origin/master
但这对我没有好处,因为我需要一个文件列表,而我的脚本不能假设分支是 master
或者当前分支正在跟踪 origin/master
。
通过一些实验(以及@ Jonathan的评论),我发现了这一点
git fetch && git diff master origin/master --name-only
几乎就在那里,但现在我需要找到一种方法来获取当前分支及其跟踪的内容,以便我可以执行类似这样的操作(python):
"git fetch && git diff %s %s --stat" % (this_branch, tracked_branch)
我觉得我大部分都在那里,因为现在我只需要知道如何获得当前分支及其跟踪的内容,但我已经给出了更广泛的背景,希望有人知道更简单的方式解决这个问题git incoming --files
会好的 ;)
假设您知道遥控器的名称(在我的示例中,来源),那么您可以简单地去:
git fetch && git diff --name-only ..origin
templates/shows/showBase.html
templates/shows/showList.html
templates/shows/showListEntry.htm
或者,如果您想要分类为单个提交,您可以使用whatchanged:
git fetch && git whatchanged --name-only ..origin
commit fcb1b56d564fe85615ecd6befcd82f6fda5699ae
Author: Grambo <email@email>
Date: Mon Dec 12 23:36:38 2011 +0000
Hooked "I've Seen This" button up to "Review Show" dialog
templates/shows/showBase.html
templates/shows/showList.html
templates/shows/showListEntry.htm
commit xasdasdsada......
比@ obmarg的答案更通用的解决方案是:
git fetch && git diff --name-only @ @{u}
这里 @
是一个快捷方式 HEAD
而这又是指向您当前签出的分支的指针。 @{u}
要么 @{upstream}
表示跟踪分支 HEAD
。所以没有关于当前分支的硬编码假设(master
),遥控器的名称(origin
)或跟踪分支的名称(origin/master
) 是必要的。
如果要使用其他分支执行此操作,请使用以下命令:
git fetch && git diff --name-only master master@{u}
的语法 @{u}
解释说 git help revisions
, 搜索 upstream
。