有谁知道如何获取给定分支的最新SHA 从git存储库外部?
如果您位于git存储库中,则可以执行以下操作:
git log origin/branch_X | head -1
但是,我不在git存储库中,并且我希望避免clone仅为了获取标签/分支的最新SHA而必须使用存储库。有聪明的方法吗?
有谁知道如何获取给定分支的最新SHA 从git存储库外部?
如果您位于git存储库中,则可以执行以下操作:
git log origin/branch_X | head -1
但是,我不在git存储库中,并且我希望避免clone仅为了获取标签/分支的最新SHA而必须使用存储库。有聪明的方法吗?
Answers:
git rev-parse origin/master # to get the latest commit on the remote
git rev-parse HEAD # to get the latest commit on the local
git rev-parse HEAD返回本地副本中git rev-parse origin/master的最新提交,而返回远程上的最新提交,这就是这里的要求。即使应该删除第一个命令,这也是我最喜欢的答案。
git rev-parse针对您在本地没有任何信息的存储库使用它?
git fetch origin; git rev-parse origin/master是,获取不是很重要吗?
我的一位同事为我回答了这个问题:
git ls-remote ssh://git.dev.pages/opt/git/repos/dev.git <branch>
如果只希望从本地存储库的当前签出分支中获取SHA-1,则只需指定HEAD即可,而不是origin / branch_X:
git --git-dir=/path/to/repo/.git rev-parse --verify HEAD
这是在存储库内部工作的复制粘贴解决方案。
origin_head=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1)
if [ $origin_head != "$(git rev-parse HEAD)" ]; then
echo >&2 "HEAD and origin/master differ."
exit 1
fi
grep "refs/heads/master$",如果有人可能要求除master以外的其他分支或拥有master2分支,则可能会
对分支头的引用存储在.git/refs/树中。因此,您应该能够在以下位置找到最新提交的哈希:
cat .git/refs/remotes/origin/branch_X
您的路径可能会略有不同。