我设置了一个Github post-receive钩子,每当推送到我的Github存储库时,它就会在我的web服务器上运行一个脚本。
当脚本运行时,我希望它保持存储库的本地裸克隆与我的Github存储库同步。为此,我让它运行此命令:
git fetch origin && git reset --soft refs/remotes/origin/master
然后,如果从我的工作站我推送到Github掌握,一切正常。但是,如果我推送到另一个远程分支,则更改不会反映在我的服务器的本地裸存储库中。
我假设有一些方法让脚本获取所有的远程分支,但我不知道如何做到这一点。我知道新版本的git有一个--all选项用于获取/拉取,但是我使用的是git版本1.6.3.3,它似乎没有这个选项。
有谁知道如何让我的脚本获取所有远程分支?
谢谢!
答案 0 :(得分:24)
git fetch origin '*:*'
为我工作。
答案 1 :(得分:1)
也许使用shell脚本?
#!/bin/sh
for i in `git remote show`; do
git fetch $i;
done;
注意:您的问题中的小术语错误:--all
的{{1}}选项会获取所有“遥控器”,而非“远程分支”。
答案 2 :(得分:0)
想象一下,当我在这里时,我会提供自己的解决方案。我接受了Ramkumar的,因为这是灵感。区别在于我不想从所有遥控器中取出,而是在“起源”中的每个远程分支...
#!/bin/bash
REMOTE_BRANCHES=$(git branch -r | awk -F'/' '{print $2}')
for i in $REMOTE_BRANCHES; do
git fetch origin $i
done
免责声明:尚未真正实现这一点,但它应该很接近。
答案 3 :(得分:0)
git fetch origin *:*
在 Windows 上为我工作。
git 版本 2.29.2.windows.3