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

Tom*_*Tom 15 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,它似乎没有这个选项.

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

谢谢!

tem*_*oto 27

git fetch origin '*:*' 为我工作.

  • 如果您只想要分支,请使用 `refs/heads/*:refs/heads/*`。如果你只想要分支和标签(不包括像 github pull 这样的东西),还要添加 `refs/tags/*:refs/tags/*`。 (3认同)

art*_*non 1

也许使用 shell 脚本?

#!/bin/sh

for i in `git remote show`; do
    git fetch $i;
done;
Run Code Online (Sandbox Code Playgroud)

注意:您的问题中的小术语错误:获取所有“远程”--all的选项git fetch|pull,而不是“远程分支”。