我最近改变了服务器克隆的方式,以加快部署速度:
git clone -b $BRANCH --depth 1 git@github.com:initech/rounding.git .
问题是,更新机制执行以下操作:
LOCAL=$(git rev-parse HEAD)
REMOTE=$(git rev-parse origin/$NEWBRANCH)
if [ $LOCAL = $REMOTE ]; then
echo "Up-to-date"
else
blah...
fi
以前这很好,但现在我得到fatal: Needed a single revision
,因为git不知道是否存在任何其他分支。
如何提取有关我要切换到的分支的信息,并检查其原始上的HEAD提交,而不将其检出(因为我想保留此结帐 - 因为它正在运行服务器)?
答案 0 :(得分:1)
你不能直接这样做:信息就不存在了。
如果你可以咨询另一个更完整的Git存储库,你可以在那里找到答案。这个的确切机制(显然)取决于你如何与另一个更完整的Git存储库进行交流和讨论 - 但是有一个内置机制:git ls-remote
。
在您自己的某个存储库中手动运行git ls-remote
,以查看它的运行情况。请注意,它通过一些Git传输调用远程(通常为origin
但you can choose which remote; see the documentation),这意味着必须允许运行它的任何人访问其他存储库。
另请注意,它会在远程上看到这些引用名称。 您的 Git存储您的副本"其他Git称之为refs/heads/master
(分支master
)"在你的 refs/remotes/origin/master
下。这使其与您的 refs/heads/master
分开。当然,他们的Git不必将master
与master
分开......所以他们的 Git以全名{{1}存储它}}。这意味着您的测试必须相应更改。