ガジェット通信 GetNews

見たことのないものを見に行こう
「ジャスティス・リーグ」特集サイト

マンガでわかるGit 10話「masterブランチを守れ!〜危険な強制プッシュ〜」

DATE:
  • ガジェット通信 GetNewsを≫

masterブランチを守れ! 〜危険な強制プッシュ〜




そ、それはだな……ごにょごにょ


わかばちゃん、私がリモートリポジトリのmasterブランチをプロテクトしておいたわ。これで、たとえ強制プッシュしてしまってもエラーで失敗するだけよ。
思う存分Gitしてね。


あ、ありがとうございます。
エルマスさんって、なんていうか、強いですよね……。

特定のブランチをプロテクト(保護)しよう

リモートリポジトリ上にある特定ブランチへの強制プッシュを、未然に無効化しておきましょう!

GitHub編

1.GitHubを開いて、Settings → Branches → Choose a branch の順にクリックします。

github01

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集を収録しています。

Amazon試し読みはこちらから

ほかにもある!わかばちゃんシリーズ

わかばちゃんと学ぶ Webサイト制作の基本

わかばちゃんが登場するWeb連載マンガ


【連載】マンガでわかるGit
【連載】わかばちゃんのオフィス訪問

登場人物紹介

Gitに関するクイズ出題中!

Gitコマンドの選択式クイズが出題中です。正解すると、このマンガのおまけの1コマが見られます。ぜひチャレンジしてみてくださいね。

湊川あい(みなとがわ あい)
絵を描くWebデザイナー。高等学校教諭免許状 “情報科” 取得済。マンガと図解の力で、物事をわかりやすく伝えることが好き。2014年より「マンガでわかるWebデザイン」をインターネット上に公開していたところ、出版社より声がかかる。初の著書「わかばちゃんと学ぶ Webサイト制作の基本」が発売中

Twitter: @llminatoll
Webサイト: http://webdesign-manga.com/

※この記事は2017年4月27日時点における実施内容です。時期・環境・バージョンによって、操作が異なることがあります。

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。