CodeIQ MAGAZINECodeIQ MAGAZINE

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

2017.05.16 Category:【連載】マンガでわかるGit Tag: ,

  • 85
  • このエントリーをはてなブックマークに追加

チームでのGit管理に慣れてきたわかばちゃんですが、何やら事件が起こりそうな予感!?
わかばちゃんの魔の手からmasterブランチを守りましょう!
by 湊川あい

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

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

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

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

  • 85
  • このエントリーをはてなブックマークに追加

■関連記事

マンガでわかるGit 11話「強制プッシュするとどうなるの?プッシュできないときはどうすべき?」... 強制プッシュするとどうなるの?プッシュできないときはどうすべき? ☆ 前回のお話はこちら:「masterブランチを守れ!~危険な強制プッシュ~」 さっきの状態を再現してみたわ。 この状態では何も問題ないわね。 ここでわかばちゃんは、masterブランチの内容を修正しようとして、...
マンガでわかるGit 9話「pullの正体はfetch+mergeだった?」... pullの正体はfetch+mergeだった? ※前回のお話:マンガでわかるGit 第8話「GitHubを使ってみよう push・pull編」 今までは、わかばちゃんは単純にこういうイメージでpush・pullをしていましたが… ↓ 実はこういう構造! リモートブランチ リモー...
マンガでわかるGit 第8話「GitHubを使ってみよう push・pull編」... GitHubを使ってみよう push・pull編 この記事は マンガでわかるGit 第7話「GitHubを使ってみよう」の続きです。 前回の状態 マンガでわかるGit 第7話「GitHubを使ってみよう」 の演習を終えたら、このような状態になっていると思います。 SourceTree...
マンガでわかるGit 第7話「GitHubを使ってみよう」... GitHubを使ってみよう そもそもソーシャルコーディングとは ソーシャルコーディングっていうのは、「ソースコードをクラウド上で共有して、他のユーザーとコラボレーションしながら開発をしていく」ということよ。 複数人で開発できる仕組みについては マンガでわかるGit 6話 「集中型...
マンガでわかるGit 第6話「集中型と分散型、何がどう違うの?」... 集中型と分散型って、何がどう違うの? バージョン管理システムは大きく分けて2種類 集中型バージョン管理システム CVS・Subversionなど 分散型バージョン管理システム Git・Mercurialなど 集中型は「ひとつのリポジトリに接続してみんなで使う」タイプ。 分散...
マンガでわかるGit 第5話「過去の状態に戻してみよう」... 過去の状態に戻してみよう このお話は「マンガでわかるGit 4話 コミットしてみよう」の続きです。 ファイルを特定の時点に戻す方法はいろいろあるけど 、今回はチェックアウトを使ってみましょう。 チェックアウト? チェックアウトをすると、作業ディレク...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ