在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”