■応用の森 GitBucketのPull Requests |
Eclipseでのファイル修正 |
Pull Requestsの機能は、Gitの標準機能ではなく、GitHubやGitBucketで実装された拡張機能ですが、 何が有利(便利)なのか、実際やってみないとあまり実感がわかないので、実際にやってみましょう。 まず、前節まででGitBucketで作成された mybrunch でEclipseの適当なファイルを編集してみます。 今回は、error.html のメッセージをちょこっと修正してみました。 ![]() ナビゲータのファイルリストの error.html に修正マーク(>)が表示されています。 これをGitBucketにプッシュします。 ![]() 「リモートのブランチへプッシュ」ダイアログボックスが表示されるので、 内容を確認してそのまま「次へ」ボタンをクリックします。 ![]() 「プッシュ確認」ダイアログボックスが表示されるので、 内容を確認してそのまま「完了」ボタンをクリックします。 ![]() Eclipse側の作業は以上です。 GitBucket側の状態を確認してみましょう。 GitBucketの変更履歴に、 「arimodoki pushed to mybrunch at arimodoki/myLabo」というメッセージが追加されています。 リモートのmybrunchへのプッシュは成功しているようです。 ![]() |
Pull Requestsの実施 |
ここまでで、EclipseからGitBucketにプッシュされた変更は、GitBucketの「mybrunch」ブランチに対する変更で、 「master」ブランチにはまだ何の変更も・影響も及ぼされません。 「mybrunch」ブランチの変更内容を、「master」ブランチに適用(マージ)するために、 Pull Requests を行います。 GitBucketの左サイドメニュー「Pull requests」を選択します。 ![]() 表示された画面右側の緑色の「New pull request」ボタンをクリックします。 下のような画面が表示されるので、一番右側の(compare)プルダウンメニューから「mybrunch」を選択します。 ![]() この状態を簡単に説明しておくと、右側(compare)ブランチを、 左側(base)ブランチにマージしますよ。という意味合いになります。 masterブランチにマージするべき修正・変更がmybrunchにあれば、 プルダウンメニューを選択した瞬間に、 すぐ下に、緑色の「Create pull request」ボタンが表示されます。 ![]() 画面の下の方には、masterブランチの変更前(赤色)と、 mybrunchの修正後(緑色)の変更部分が表示されています。 内容を確認して、「Create pull request」ボタンをクリックします。 メッセージ入力画面が表示されるので、pull request メッセージを何か入力して、 画面右下の「Create pull request」ボタンをクリックします。 ![]() マージ確認画面が表示されるので、「Merge pull request」ボタンをクリックします。 ![]() しつこいようですが(笑)最終確認ボタン、「Confirm merge」ボタンをクリックします。 ![]() 以上で、「mybrunch」ブランチから「master」ブランチへのマージが完了しました。 最後に、ちゃんと「master」ブランチが変更されているか確認しておきましょう。 GitBucket左サイドメニュー「Branches」クリックして、右側で「master」ブランチを選択します。 ![]() 内容が正しく修正されていれば問題ありません。 GitBucketでのPull Requestsの作業は以上となります。 ユーザーブランチからmasterブランチへのマージ処理は、gitのmergeコマンドを使ってもできますが、 Pull Requestsは、これをGUIベースで行えると思ってもらえばわかりやすいかもしれません。 (ちょっと、違う気もするが、、、、) まぁ、とにかくPull Requestsという一操作が加わる事で、ユーザーブランチの変更をmasterブランチにマージする際にも 変更部分の差分を一目瞭然で確認することができるので、競合が発生しにくいという大きな利点があります。 Pull Requestsは、GitBucket側で行うので、Eclipse側は基本的には「mybrunch」をプッシュするだけでいいのですが 時々、「master」ブランチを、Eclipse上の「mybrunch」に同期する必要があるので、 最後に、Eclipseの「master」ブランチ同期について解説しておきます。 |
Eclipseの「master」ブランチ同期処理 |
Eclipseで修正したりソースファイルは、Pull Rerequestsを使って、 GitBucketの「master」ブランチに同期することはできました。 ただ、このプロジェクトでは、自分だけでなく、複数のメンバーが「master」ブランチにマージをかけるので、 「master」ブランチは常に最適な状態(最新の状態とは違う)に保たれています。 一方、自分のEclipse上の「mybrunch」ブランチは、自分が修正したものは常に最新に保たれていますが、 他のメンバーが変更したリソースは一切同期していないため、masterより古い状態になっている可能性があります、 もし間違ってそのソースを修正して、Pull Requestsを実行すると、競合が発生してプッシュできなくなってしまします こうなると、GitBucket上ではにっちもさっちもいかなくなり、 コマンドラインレベルで、リポジトリのリバートかけたりと、大変なことになるので注意しましょう。 話がそれましたが、そんな悲しい思いをしないために、一つ鉄則を伝授しておきます。 朝出社して、Eclipseを起動し、プロジェクトの修正を始める前に、 まず、Eclipseプロジェクトのブランチが、「mybrunch」ブランチになっていることを確認して、 Eclipseプロジェクトをマウス右クリックでメニューを表示させ、 「チーム」ー「マージ」で表示されたダイアログボックスの上段にある 「リモート・トラッキング」ツリーの内の「origin/master」ノードを選択して 「マージ」ボタンをクリックします。 これで、ローカル「mybrunch」ブランチのリソースは、 リポジトリ上の「master」ブランチの内容でマージされます。 ※)もちろん「master」ブランチよりソース改造が進んでいる部分は残っているので心配無用です。 以降は、いつも通り自分のローカルブランチで開発作業を行います。 そして、本日の作業が終わるときに、「mybrunch」をGitBucketにプッシュして、 GitBucketでPull Requestsを行う(もしくはPull Requests担当者に通知する) この手順をしっかり守れば、ちょっとやそっとじゃ競合は発生しないはず。 、、、、なんですが、所詮人間のやる事。一度は必ず悲しい思いを経験するんですよねぇ(はぁ) |
GitBucketのブランチ作成 ![]() |
GitBucketのPull Requests |
![]() |