繁体   English   中英

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

[英]Fetching all remote branches into a bare Git repository

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

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

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

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

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

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

谢谢!

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

也许使用shell脚本?

#!/bin/sh

for i in `git remote show`; do
    git fetch $i;
done;

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

想象一下,当我在这里时,我会提供自己的解决方案。 我接受了Ramkumar的,因为这是灵感。 区别在于我不想从所有遥控器中取出,而是在“起源”中的每个远程分支......


#!/bin/bash
REMOTE_BRANCHES=$(git branch -r | awk -F'/' '{print $2}')
for i in $REMOTE_BRANCHES; do
    git fetch origin $i
done

免责声明:尚未真正实现这一点,但它应该是关闭的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM