Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在git中签出远程分支_Git_Branch_Commit - Fatal编程技术网

在git中签出远程分支

在git中签出远程分支,git,branch,commit,Git,Branch,Commit,我已将/var/www/website设置为(非裸)回购,并将我的裸回购的更新后挂钩: #!/bin/sh echo echo "**** Pulling changes into Live [Hub's post-update hook]" echo cd /var/www/website || exit unset GIT_DIR git pull hub master exec git-update-server-info 因为我想在推送之后马上看到网站上的变化 但是如果我创建了远

我已将
/var/www/website
设置为(非裸)回购,并将我的裸回购的更新后挂钩:

#!/bin/sh

echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo

cd /var/www/website || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info
因为我想在推送之后马上看到网站上的变化

但是如果我创建了远程分支,在我的本地repo中使用它,然后在其中提交和推送更改,我就无法在网站上看到它们(我总是看到master)


有什么方法可以在远程(非裸)回购中进行签出吗?

更新后挂钩获取所有已更新引用的名称。这些将是位置参数(
$1
$2
,等等)。你必须决定如何处理每一个

例如,这有点愚蠢的更新后脚本:

#! /bin/sh

for ref do
    case $ref in
    refs/heads/*) echo "a branch ($ref) was updated";;
    refs/tags/*) echo "a tag ($ref) was updated";;
    *) echo "something I don't understand ($ref) was updated";;
    esac
done
只需打印出所有更新内容的全名

让它变得不那么愚蠢,假设我们想要捕捉分支更新并对它们做一些有用的事情。用更复杂的内容替换第一个回音:

    refs/heads/*) branch_update $ref;;
当然,我们必须定义一个分支更新函数。以下是新脚本(它仍然没有做任何事情,但有明显的地方可以做一些事情):

旁白:你的问题的措辞表明你并不像以前那样“用git思考”。:-)当你推送(从你自己的某份回购协议到某份回购协议的另一份副本,不管是裸副本还是非裸副本),如果你改变观点,你可能会发现结果更容易理解。你可以先想“我在推”,然后你可以想象远程回购是另一个演员,让我们给他起个名字,叫他“鲍勃”,想想鲍勃看到了什么。从Bob的角度来看,Bob认为:“我,Bob,从那边的Yekver家伙那里得到了一些东西,并将其放入我的回购协议中。我正在添加标记refs/tags/v1.1,我正在进行一些提交,并将它们放入我的refs/heads/master中,我正在进行更多的提交,并将它们放入我的refs/heads/devel xyz中。”


这里的关键概念是git所做的一切都是本地的。从Bob的角度来看,Bob的回购是本地的。有个叫Yekver的家伙可能有一份基于此的回购协议,但Bob的副本是Bob的。Bob使用Bob的本地repo进行本地操作,当您在这些钩子脚本中工作时,您就是“Bob”。

更新后钩子获取所有已更新引用的名称。这些将是位置参数(
$1
$2
,等等)。你必须决定如何处理每一个

例如,这有点愚蠢的更新后脚本:

#! /bin/sh

for ref do
    case $ref in
    refs/heads/*) echo "a branch ($ref) was updated";;
    refs/tags/*) echo "a tag ($ref) was updated";;
    *) echo "something I don't understand ($ref) was updated";;
    esac
done
只需打印出所有更新内容的全名

让它变得不那么愚蠢,假设我们想要捕捉分支更新并对它们做一些有用的事情。用更复杂的内容替换第一个回音:

    refs/heads/*) branch_update $ref;;
当然,我们必须定义一个分支更新函数。以下是新脚本(它仍然没有做任何事情,但有明显的地方可以做一些事情):

旁白:你的问题的措辞表明你并不像以前那样“用git思考”。:-)当你推送(从你自己的某份回购协议到某份回购协议的另一份副本,不管是裸副本还是非裸副本),如果你改变观点,你可能会发现结果更容易理解。你可以先想“我在推”,然后你可以想象远程回购是另一个演员,让我们给他起个名字,叫他“鲍勃”,想想鲍勃看到了什么。从Bob的角度来看,Bob认为:“我,Bob,从那边的Yekver家伙那里得到了一些东西,并将其放入我的回购协议中。我正在添加标记refs/tags/v1.1,我正在进行一些提交,并将它们放入我的refs/heads/master中,我正在进行更多的提交,并将它们放入我的refs/heads/devel xyz中。”

这里的关键概念是git所做的一切都是本地的。从Bob的角度来看,Bob的回购是本地的。有个叫Yekver的家伙可能有一份基于此的回购协议,但Bob的副本是Bob的。Bob用Bob的本地回购协议做本地的事情,当你在那些钩子脚本中工作时,你就是“Bob”