質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.69%

githubの権限を確認する方法

受付中

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 23K+

renren643

score 242

github organizetionで共同開発しようとしているんですが、git push origin master したら、
permission denied と言われます。

権限はどこから確認したらいいのでしょうか?

調べたところ権限が関係あるようなのですが、team内のメンバーの権限はどのように確認し、どのように変更したらいいのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+10

ふーむ、ちょっと情報が足りないみたいだから整理していこうね。
順序立てて説明していくから、知ってれば斜め読みでざっと読み飛ばして、
知らなかったら少し分量が多いけど読み進めてみてね。


権限はどこから確認したらいいのでしょうか?

先に質問に答えよう。

GitHubのプロジェクトは、誰でもソースコードをcloneやダウンロードは可能。
しかし、権限を持った人しか更新が出来ない仕組みになってるの。
そうすることによってオープンソースコードなのに、悪意の第三者のウィルスが勝手に混入しないような仕組みになってるんだ。

プロジェクトメンバーになるには、そのプロジェクト自体にあれこれ出来る上位の権限持ちでしか何も出来ない。
管理者アカウントは他のアカウントに向かってジョイン申請が行える。
ジョイン申請を受け取ったユーザーには「ジョインしますか?」というメール通知が届くから、
メールの指示に従ってOKを返すと晴れてプロジェクトのメンバーになれるよ。

例として私のプロジェクトをちょっと見てみようか。
https://github.com/miyabisun/conoha-cli

注目するべきは「Clone or download」ボタンの上の列にある「1 contributer」って記述。
このリンクをクリックしてみよう。
プロジェクト参画メンバーがずらずらと表示されるので、貴方の名前があれば権限は既にある状態。

もし既にあるのにコミット出来ないならば、
GitとGitHubの相関が分かってないと思うから次の章に進もう!


GitとGitHubアカウントの相関に関して

そもそもGitというバージョン管理ツールとGitHubは直接的な相関はないんだ。
GitHubはGitの「バージョン管理情報のファイルの集合体」を預かってくれるサービスで、
BitbucketやGitLabみたいな類似のサービスが沢山あるんだよ。

貴方のパソコンにGitをインストールしたからといって、
勝手にGitHubの貴方のアカウントに紐付いたりはしないってわけだね。

だから例として、こんな感じで他人のプロジェクトをクローンしても…
git clone https://github.com/miyabisun/conoha-cli
これはアカウント情報が何も載っていない…
つまりゲストアカウントで持ってきたプロジェクトってわけだね。

こうして取ってきたプロジェクトは、例えプロジェクトを作った私であっても更新出来ない。
なぜなら匿名のゲストアカウントで入ってるからね。


GitHubのアカウントとGitを紐付ける

SSHというパソコンの遠隔操作の仕組みは知っているかな?

実はGitHubにはSSHでログインすることが出来るんだ!
より正確に言えばSSHの堅牢な認証システムの部分だけを利用して、
GitHubのアカウントと自分自身を紐付ける事が出来るんだ。

しかし、GitHubにSSHでログインする場合、公開鍵暗号方式を採用する必要がある。
お前らのSSH Keysの作り方は間違っている - Qiita
上記のような記事を参考に秘密鍵と公開鍵を用意しておこう。

公開鍵の準備が出来たらGitHubにログインして設定しよう。
アカウントの設定画面へ遷移出来たら、左のメニューにある「SSH and GPG keys」を選択。
「New SSH key」のボタンをクリックして「id_rsa.pub」ファイルをアップロードしてしまおう。

「Clone or download」のボタンをクリックすると、
git cloneコマンドで使うURLが払い出されるんだけど、
右上にある「Use SSH」リンクをクリックすればgit@github.com:miyabisun/conoha-cli.git等という風にURLがSSH用のものに変化する。

これをコピペしてきて…こんな感じに入力する。
git clone git@github.com:miyabisun/conoha-cli.git
これで私はSSH認証によりGitHubのアカウントの権限を持ってこのプロジェクトをクローンしてきましたよという宣言になる。

この状態でクローンしてきたプロジェクトの参画メンバ(Contributor)に貴方のアカウントが含まれているのなら、
特に気にしなくても自由にgit pushコマンドを使ってGitHub上のブランチを更新することが出来るはずだよ。


既にプロジェクト作ってる場合は?

うーん、既にgit pushが弾かれて困ってる所まで話が進んでるんだよね。
だからこの章が必要に思えるね…方法は2通りあるよ。

  • git remoteコマンドで再設定
  • .git/configファイルを直接編集する

コマンドで再設定する場合は下記の記事が役に立ちそう。
gitのremote urlを変更する(レポジトリ移行時) - Qiita
ファイルの編集は…まぁ開けばわかると思うよ。


いや、それでも更新出来ないんだが?

なるほどgit push origin masterね……
だとすると、そのプロジェクトはmasterブランチを上書き出来ないようにロックしている可能性があるよ。

例えばGit-Flowというブランチ管理戦略がある。
Git-Flowの思想に乗っかるなら、本番環境のファイルは常にmasterブランチのファイルと一致していなければならない。
つまり、一作業者が勝手に更新することは許されないわけだね。
それを実現する為に、GitHubでは特定のブランチへのpush操作を禁止することが可能。

じゃあどうするの?というと、
適当なブランチ名で機能を作ってpush、GitHubの管理画面でmasterに取り込んでくれませんか?という趣旨のスレッドを建てる。
この一連の流れをプルリクエストと呼ぶんだ。

これで様々な人のレビューを受けて、
意思決定者達が「よし、このコードで完璧だ、採用!」という事でプルリクエストの画面で「マージ」ボタンをクリックすると晴れてmasterブランチに修正内容が取り込まれる。

まぁ、プロジェクトの管理手法はGit-Flowだけじゃなくて色々ある。
どうすれば良いかの手順はプロジェクトリーダーやメンバーに相談してみて。


はい、こんな感じでどうかな?
一通り盛り込んで見たから多分これで大丈夫だと思うよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

read 権限があって write 権限が無いんだと思います(自分も同様のケースに遭遇しました)
どのレベルの権限が与えられているかの表示は見つけられませんでしたが、↓ の表で該当する操作が可能かどうかで write 権限が無いことを確認しました。
https://help.github.com/articles/repository-permission-levels-for-an-organization/
(具体的にはプルリクエストのマージ、他メンバの発言に対しての編集アクション、などのためのUI部品が表示さ
れていない等々)

自分は招待側にお願いして権限を追加して貰って解決しましたので、具体的な変更操作については知らないです…

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.69%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る