CodeIQ MAGAZINECodeIQ MAGAZINE

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

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

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

チームでの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日時点における実施内容です。時期・環境・バージョンによって、操作が異なることがあります。

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

■関連記事

マンガでわかる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話 コミットしてみよう」の続きです。 ファイルを特定の時点に戻す方法はいろいろあるけど 、今回はチェックアウトを使ってみましょう。 チェックアウト? チェックアウトをすると、作業ディレク...
マンガでわかるGit 第4話「コミットしてみよう」... コミットしてみよう ファイルの変更を記録しよう リポジトリにファイルの変更を記録してみましょう。 基本の流れはこうです。 作業する ステージする(撮影台に乗せる) コミットする(スナップショットを撮る) 1.作業する 第3話で指定したフォルダに、テキストファイルを...

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

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

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

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