有没有办法通过试运行
git push
来了解用户是否有权实际创建新的远程分支?我希望能够验证一堆存储库的权限是否一切正常,用户将在实际创建新分支之前尝试创建新分支,以便我可以在实际执行操作之前干运行完整执行。
肖恩·皮尔斯写了以下关于
git push --dry-run
的内容:
(我的重点)A
不会从客户端发送客户端将使用的命令 到服务器,因此服务器无法告诉客户端是否接受它们 或不。整个--dry-run
在远程是只读的:它检查远程是否有您本地没有的更改,但不会向远程发送任何更新。--dry-run
所以,如果有一种方法可以检查一个人是否有远程写入权限,那么
git push --dry-run
绝对不是。
git clone ....
git checkout master
git branch -f test master
git push --dry-run origin test
即使我在此服务器/存储库组合上的推送权限为零,它也通过了
To ssh://<server>/repo
* [new branch] test -> test
在没有空运行的情况下推送会遇到我预期的错误情况
git push origin test
Total 0 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 1, done
To ssh://<server>/repo
! [remote rejected] test -> test (can not create new references)
error: failed to push some refs to 'ssh://<server>/repo'
git push
文档 @https://git-scm.com/docs/git-push --dry-run 作为一个选项出现:
git push [--all | --mirror | --tags] [--follow-tags]
[--atomic] [-n | --dry-run ] ... (more flags)
通常意味着服务器照常处理命令,只是数据没有被修改,即没有任何改变。
它对于测试关键命令很有用,因为服务器记录的输出(几乎)等于“湿”运行的输出。