git:如何以编程方式判断是否可以推送回购?

git: how can I programmatically tell if a repo can be pushed?

我从我拥有写入权限的克隆存储库中看到此输出:

$~/g/cad --> git push 
Everything up-to-date

还有一个我不知道的输出:

$~/g/opentx --> git push
Username for 'https://github.com': 

如何以编程方式判断特定存储库具有写入权限?

判断您是否具有对远程存储库的写入权限的唯一方法是尝试通过推送提交或标记或其他方式在其中写入内容。

我猜你尝试推送标签,然后删除标签:

git tag a-test-tag
git push origin a-test-tag
git push --delete origin a-test-tag

如果 push 成功,您 可能 对远程存储库具有写入权限(我说 "probably" 因为您可能只能更新标签但不能推送提交,或者您可能只能将提交推送到特定分支等)。

如果需要身份验证,您可以导致 git 失败,而不是提示输入凭据,方法是将 GIT_ASKPASS 环境变量设置为 true:

GIT_ASKPASS=true git push origin a-test-tag