如何检查对远程Git存储库的写访问权限(“我可以推送吗?”)

时间:2014-04-02 12:10:58

标签: git github git-remote ls-remote

我正在构建一个(有点受限)的Git客户端。要设置存储库,请输入远程存储库的URL。我想检查用户是否具有对该存储库的读写访问权限。如果没有,我会出现一个身份验证对话框。

我使用git ls-remote <url>检查'读取'访问权限

是否有类似的方法来检查'写'访问,而不首先克隆回购? (我知道我可以git clone <url>然后git push --dry-run

3 个答案:

答案 0 :(得分:35)

如果git repo在github中,请打开仓库中的任何文件,然后点击“编辑”, github将显示如下内容:

  

您正在编辑您没有写入权限的项目中的文件。我们已经创建了一个这个项目的分支,您可以提交您提议的更改   至。提交对此文件的更改会将其写入新分支   你的前叉,所以你可以发送一个pull request.enter代码

答案 1 :(得分:7)

使用最新的 GitHub API,您可以使用以下命令(您需要 permissions on a particular repo)检查 USERNAME(您的或其他用户)的 authenticate using your personal access token,例如:

curl -u your_username:your_access_token \
 -H "Accept: application/vnd.github.v3+json" \
 https://api.github.com/repos/octocat/hello-world/collaborators/USERNAME/permission

响应将显示 USERNAME 对该存储库的权限。否则会报:

<块引用>

"message": "未找到"

请注意,您应该具有对相关存储库的推送访问权限,否则它将失败

{
  "message": "Must have push access to view collaborator permission.",
  "documentation_url": "https://docs.github.com/rest/reference/repos#get-repository-permissions-for-a-user"
}

答案 2 :(得分:2)

您可以在不进行克隆的情况下执行git push git+ssh://host.org/path/to/repo some_ref。但请参阅上面的评论