Git 如何从浅克隆中检查不同分支的遥控器头部?

Git 如何从浅克隆中检查不同分支的遥控器头部?,git,Git,我最近将服务器克隆方式改为浅层,以加快部署速度: 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...

我最近将服务器克隆方式改为浅层,以加快部署速度:

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
以前这很好,但是现在我遇到了致命的问题:需要一次修订,因为git不知道是否存在任何其他分支


我如何才能在不签出的情况下提取有关我要切换到的分支的信息,并检查其原始分支上的头提交,因为我想保持此签出状态—因为它正在运行服务器?

您不能直接执行此操作:信息根本不存在

如果您可以参考另一个更完整的Git存储库,您可以在那里找到答案。实现这一点的确切机制显然取决于您如何与另一个更完整的Git存储库联系和交谈,但有一个内置机制:Git ls remote

在您自己的存储库中手动运行git ls remote,查看它的运行情况。注意,它通常通过一些Git传输调用远程源,这意味着必须允许运行它的人访问另一个存储库

还要注意的是,它获得了远程服务器上显示的这些引用名称。您的Git将另一个Git称之为refs/heads/master branch master的副本存储在您的refs/remotes/origin/master下。这将使其与您的裁判/裁判/主裁判分开。当然,他们的Git不必让他们的主人和他们的主人分开。。。所以他们的Git将其存储在全名refs/heads/master下。这意味着您的测试必须相应地更改