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


83

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

我检查“读”访问git ls-remote <url>

有没有类似的方法可以检查“写入”访问权限而无需先克隆存储库?(我知道我可以git clone <url>,然后git push --dry-run


2
好吧,从技术上讲,要将提交推送到存储库中,您无需首先克隆它。但是请记住,推送提交链和更新远程引用是两个不同的操作,您可能对前者有权限,而对后者则没有权限。同样,某些参考文献可能无法修改。
user3159253 2014年

这篇文章中提到了“ git push --dry-run”,这是克隆后检查写访问权限的一种方法。但是,对于我的某些遥控器,这会打开密码提示并无限期挂起。似乎没有一种非交互式的方法来检查您是否具有写访问权限,即使您确实有该存储库的克隆。如果确实有它的副本,如何检查对git存储库的写访问权限?
rektide

Answers:


61

如果git repo在github中,请打开该repo中的任何文件,然后单击“ edit”,github将显示以下内容:

您正在编辑一个没有写权限的项目中的文件。我们为该项目创建了一个分支,以供您提交对您所做的更改。提交对此文件的更改会将其写入到您的fork中的新分支中,因此您可以发送请求请求。在此处输入代码


21
您没看错-Github确实显示了这种行为。但是,OP要求提供类似于git ls-remote其新工具可以使用的功能,因此Github Web UI可能不适合他们。
RJHunter '16

11
git存储库比github存储库还多;)
RenéRoth

4
关于GUI,如果没有访问权限,工具提示还可以指示您可以“编辑”还是“先分叉再编辑”。无论是Github还是GH Enterprise,都是如此。
Scott Prive

1
分叉一个仓库可以复制整个仓库,对吗?回购可能非常大。只是为了检查您的访问级别,这似乎是一项非常艰巨的操作……
Kyle Delaney

2
@KyleDelaney您无需单击编辑按钮,只需将鼠标悬停在它上面。它将显示“编辑此文件”或“在此项目的分支中编辑文件”,这取决于您是否具有写权限。
joulev

3

您可以执行git push git+ssh://host.org/path/to/repo some_ref而无需克隆。但是请看我上面的评论


2
该方法将在具有引用的工作目录中工作。有没有一种方法,而无需设置虚拟仓库和先创建提交?
Yang Meyer

15
是的,谁想要所有这些随机虚拟提交?有没有更清洁的方法?
Dan Bolser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.