如何仅为最新获取的分支调用`git show`?

时间:2017-02-01 11:31:50

标签: git git-fetch git-show

我拥有数百个分支机构的存储库,我想仅为git show所示的最近提取或更新的那些分支运行git fetch,例如

$ git fetch tester
From repo:Foo/Bar
 * [new branch]      Foo -> origin/Foo
   a7e70a8..a9d7805  Bar -> origin/Bar
 + b673629...293dc64 Baz -> origin/Baz (forced update)
 + 345850e...b3646a3 Qux -> origin/Qux (forced update)

所以我想最终得到如下命令:

git show origin/Foo origin/Bar origin/Baz origin/Qux

将向我展示这些最近获取的分支与其父母提交之间的差异。

如何实现这一目标?

我已经尝试了git show FETCH_HEAD,但它只显示了一个分支以及refname'FETCH_HEAD'不明确的警告。

而且git show $(git branch -r --sort=authordate | head)向我显示了更多较旧的分支,其次命令在->的行上断开,所以它也不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用for-each-ref

获取最近更新的分支
git for-each-ref --sort=-committerdate refs/remotes/origin

使用--format=%(objectname)获取这些分支的负责人。这将获得五个最近更新的分支,

git for-each-ref --sort=-committerdate --format="%(objectname)" refs/remotes/origin | head -5 

答案 1 :(得分:0)

这是涉及解析git输出的解决方案,例如

git fetch tester 2>&1 | grep -o "origin/\S\+" | xargs git show

origin替换为远程主机的名称。

您可以使用--dry-run参数首先测试它(在获取分支之前),例如

git fetch tester --dry-run 2>&1 | grep -o "origin/\S\+"