我拥有数百个分支机构的存储库,我想仅为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)
向我显示了更多较旧的分支,其次命令在->
的行上断开,所以它也不起作用。
答案 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\+"