LoginSignup
8
4

More than 3 years have passed since last update.

所属するOrganizationのリポジトリにプッシュできない問題を解決

Last updated at Posted at 2020-11-02

コミュニティ貢献活動をしていて直面し、解決した問題を共有します。

この記事について

  • 公式ページのソースを記載しています。最新の情報は公式ページを参照してください。
  • ソースコードや実行コマンドは、個人情報を保護するために、意味が変わらない程度に編集しています。
  • 不明点等ございましたら、お気軽にお問い合わせください。

直面した問題

タイトルにもあるように、GitHubの自組織Organizationリポジトリに対してプッシュできない問題に直面しました。

事象

メンバーロールで所属しているOrganization内の、他人がforkしたリポジトリに対してpushができません。
pushしようとすると、以下のエラーメッセージが出力されます。

C:\Users\MyPC\test-organization\test-repository>git push -u origin test
remote: Permission to test-organization/test-repository.git denied to kobaji.
fatal: unable to access 'https://github.com/test-organization/test-repository.git/': The requested URL returned error: 403

【補足】

Organizationには以下のロールがあります(参考:「GitHubドキュメント>Organization のリポジトリ権限レベル」)。

  • 支払いマネージャー
  • オーナー
  • メンバー

原因(当方の場合)

結論を言うと、Organizationの設定にて、リポジトリに対してRead権限を付与していないためでした。

これは「GitHub公式ドキュメント>Organization の基本レベルの権限の設定」にも記載されています。

デフォルトでは、Organization のメンバーは Organization のリポジトリに対する読み取り権限を付与されます。

Organization のリポジトリに対する管理者権限があるユーザが、リポジトリに対してそれより高いレベルの権限を付与すると、基本レベルの権限は、付与された高い権限によってオーバーライドされます。

ドキュメントのとおり、オーナー権限で「Your profile」>「Organizations」>「Settings」>「Member privilegs」>「Base permissions」を確認したところ"Read"になっていました。

対処法

「Base permissions」を"Write"にしました。

結果

pushできました!

おまけ

その他解決法

上記の方法では、対象のOrganizationに所属する全メンバーに対し、また対象のOrganization内の全リポジトリに対し、一括で権限を変更します。それだと困る場合に、代替案をいくつか挙げます。

方法 特徴
チームを作成し、アクセスを管理する 複数リポジトリがある場合に、チームごとにアクセス権を付与することができます。
個人ごとにアクセスを管理する 対象のOrganization内の全リポジトリに対し、個人のロールを変更することができます。
8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4