将所有远程分支获取到裸Git存储库中

时间:2010-10-05 17:34:18

标签: git github

我设置了一个Github post-receive钩子,每当推送到我的Github存储库时,它就会在我的web服务器上运行一个脚本。

当脚本运行时,我希望它保持存储库的本地裸克隆与我的Github存储库同步。为此,我让它运行此命令:

git fetch origin && git reset --soft refs/remotes/origin/master

然后,如果从我的工作站我推送到Github掌握,一切正常。但是,如果我推送到另一个远程分支,则更改不会反映在我的服务器的本地裸存储库中。

我假设有一些方法让脚本获取所有的远程分支,但我不知道如何做到这一点。我知道新版本的git有一个--all选项用于获取/拉取,但是我使用的是git版本1.6.3.3,它似乎没有这个选项。

有谁知道如何让我的脚本获取所有远程分支?

谢谢!

4 个答案:

答案 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