目次
masterブランチを守れ! 〜危険な強制プッシュ〜
そ、それはだな……ごにょごにょ
わかばちゃん、私がリモートリポジトリのmasterブランチをプロテクトしておいたわ。これで、たとえ強制プッシュしてしまってもエラーで失敗するだけよ。
思う存分Gitしてね。
あ、ありがとうございます。
エルマスさんって、なんていうか、強いですよね……。
特定のブランチをプロテクト(保護)しよう
リモートリポジトリ上にある特定ブランチへの強制プッシュを、未然に無効化しておきましょう!
GitHub編
1.GitHubを開いて、Settings → Branches → Choose a branch の順にクリックします。
2.Protected branches 欄の、 Choose a branch をクリックし、保護したいブランチの名前を入力します。
3.Protect this branch のチェックマークをONにします。
4.ブランチの設定画面に戻ると、保護されているブランチの欄に、masterブランチが加わったのが見てとれます。
Bitbucket編
Bitbucketの場合、先に挙げたGitHubと同じ機能はありませんが、特定ブランチへpushできる人を制限する機能があるので、それで代用できます。
1.Bitbucketを開いて、設定 → ブランチのアクセス許可 → Add a branch permission の順にクリックします。
2.権限を設定したいブランチ名を入力し、そのブランチに対する権限を各ユーザーごとに設定できます。
たとえば、
- 教授だけがmasterに直接pushできる
- 教授だけがプルリクエストをmasterにマージできる
ようにしたいならば、Branch or patternに「master」と打ち込んだ上で、Write accessとMerge via pull requestに、教授のアカウント名を入れ「保存」をクリックします。
これで、通常のpushだろうと強制pushだろうと、権限がない人(教授以外)は、masterに直接pushができなくなります。
- Write access : 書き込み権限
- Merge via pull request : プルリクエストをマージできる権限
ちゃんとブランチが保護されたの? 確認してみる
さっきの設定で、本当にmasterブランチへの強制プッシュを防げるようになったのでしょうか?
試しに、強制プッシュして確認してみます。
SourceTree Windows版は、安全のために強制プッシュできない仕様になっているので、コマンドラインを使います。
SourceTreeのメニューから「ターミナル」アイコンをクリックします。(Mac版の場合は「端末」をクリック)
コマンドラインを打てる画面が表示されます。
以下のように打ち込み、エンターを押します。
$ git push -f origin master
- git push -f ・・・ fは「force」の略。強制プッシュをするという意味
- origin ・・・ リモートリポジトリの名前
- master ・・・ プッシュしたいブランチの名前
強制プッシュの処理が始まりますが…
素晴らしい! エラーになって、無事、強制プッシュが防げたわね。
まとめ
- GitHubの場合、「Protect this branch」で、特定のブランチへの強制プッシュ(git push -f)を防げる
- Bitbucketの場合、「Add a branch permission」で特定ブランチへpushできる人を制限できるので、それで代用できる
- 事前に、大切なブランチを保護しておくことで、チームみんなが安心して作業できるようになる
- 「人に罪を作らせない仕組み」を整えよう!
次回予告 〜強制プッシュすると具体的にどうなっちゃうの?〜
強制プッシュとやらは、安易に使うとマジ危険っていうのがわかったよ。
そ、そうか。わかってくれたならいいんだ。
もし、さっき本当に私が強制プッシュしちゃってたら、具体的に何がどうなって困ってたわけ?
いい質問ね。単に「ダメ」と言われても、理由がわからないと、また同じような失敗をしてしまうかもしれないものね。
次回は、”強制プッシュするとどんなことが起きるのか”、テスト用のリポジトリで実験してみましょう。
実験!ワクワクするね!
とんだ破壊神だな、君は……。
マージ・リベース・プルリク。Gitの必須知識の解説は書籍版で!
マンガでわかるGitが書籍化いたしました!
わかばちゃんと学ぶ Git使い方入門
著者:湊川あい/監修:DQNEO
出版社:C&R研究所
- CHAPTER 1 Gitって何?
- CHAPTER 2 個人でGitを使ってみよう
- CHAPTER 3 複数人でGitを使ってみよう
- CHAPTER 4 実用Git 〜 こんなときはどうすればいい?
- CHAPTER 5 Gitで広がる世界
CHAPTER 1・2は、Web連載の1〜9話をベースに、さらに詳しい解説・新しい図解を追加しました。
CHAPTER 3・4・5は書籍限定の内容となっています。
- ステージングエリアやブランチの概念
- マージ
- リベース
- コンフリクト解決
- プルリク
といった基本の使い方はもちろん、CHAPTER4では、「Gitを使っていて、よくぶつかる状況」と「解決策」をまとめた逆引きTips集を収録しています。
登場人物紹介
著者プロフィール
マンガ:湊川あい(みなとがわ あい)
フリーランスのWebデザイナー・マンガ家・イラストレーター。マンガと図解で、技術をわかりやすく伝えることが好き。「マンガでわかるGit」書籍版発売中!
主な著書 わかばちゃんと学ぶ Webサイト制作の基本・わかばちゃんと学ぶ Git使い方入門・わかばちゃんと学ぶ Googleアナリティクス〈アクセス解析・Webマーケティング入門〉
Twitter: @llminatoll
※この記事は2017年4月27日時点における実施内容です。時期・環境・バージョンによって、操作が異なることがあります。