平凡エンジニアによる平凡ブログ

平凡インフラエンジニアがスキルアップを目指してプログラミングやクラウドやサーバといったインフラのアウトプットをしていきます!

【git】リモートリポジトリへブランチ反映〜プルリクエストまで

今回の実装

前回はローカルでブランチを作成して、マスターにマージさせるところまで 実施しました。
前回記事
【git】ローカルでブランチ作成〜マスターへマージまで - satoru103’s blog

今回はローカルのブランチをリモートリポジトリに反映させて
プルリクエストするところまで記載します。

1.ローカルで作成したブランチをリモートリポジトリへ反映させる

 $ git push origin devise

今回は前回同様deviseというブランチをリモートブランチに反映させます
コマンド:git push origin [ブランチ名]
リモートブランチでブランチ作成してなくても自動で作成されます。

実際にGitHubに反映しているか確認します。 Image from Gyazo

2.プルリクエストを出す(説明)

まずプルリクエストとは簡単にいうと、ブランチでの変更点をマスターへ 反映させてよいかチームメンバーや管理者にリクエストを送ることです。

プルリクエストによって、コードレビューを行い、プルリクエストをしてきた本人に対して修正点をコメントすることも可能です。
本記事ではコメント機能について説明は省きます。

プルリクエストを実行するためには以下のコマンドを実行する必要があります。

$ hub pull-request -o

しかしこのコマンドは通常デフォルトではインストールされていないので
インストールする必要があります。

3.パッケージ管理システムのhomebrewをインストールする
パッケージ管理システムとは簡単にいうと、MacOSで使用される
パッケージの依存関係などの情報を一元管理するシステムのことです。

といっても理解しにくいのですが
ここではその他のソフトウェアに影響を与えないように安全にパッケージをインストール するために必要なものと理解してください

パッケージ管理システムとhomebrewについては以下の記事でわかりやすく
まとめていただいてます。 https://qiita.com/omega999/items/6f65217b81ad3fffe7e6

ターミナル上で以下のコマンドを実行してください。 プログラムごとではな OSにインストールするのでフォルダはどこでもいいです。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" 

コマンドを実行すると以下のような出力がされます。

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
(省略)
Press RETURN to continue or any other key to abort
==> Downloading and installing Homebrew...
**ここで何かしらボタンを押してください。押さないと以降の処理が進みません**
(省略)
==> Installation successful!
この表示が出れば、インストール完了です

4.コマンドラインツールであるhubをインストールする。
プルリクエストのコマンドを含めたツールをインストールします。
hubについての詳しい説明は省きます。hubのREADMEはこちらです。
https://github.com/github/hub/blob/master/README.md

$ brew install hub
 
 #出力例
 Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/hub-2.14.2.mojave.bottle.tar.
==> Downloading from https://akamai.bintray.com/bc/bcbae9c683d76f3395665467ba0f0c0
######################################################################## 100.0%

ここまでできてやっとプルリクエストを行うコマンドを実行できます。

5.実際にプルリクエストしてみる。
実際にコマンドでプルリクエストしてみましょう。
ブランチを作成して、ファイルを変更してコミットまで完了している前提で
プルリクエストを出したいブランチで以下のコマンドを実行します。

 $ hub pull-request -o

このコマンドを実行すると以下のような表示になります。 一番上に記載がある「ユーザ新規登録・ログイン機能」はコミットした際のメッセージです

 ユーザ新規登録・ログイン機能
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
(省略)

Write a message for this pull request. The first block
of text is the title and the rest is the description.
~                                                                                                                                                                                                                            
~                                                                               
"~/projects/pictweet/.git/PULLREQ_EDITMSG" [noeol] 9L, 349C

この画面はファイルの中身を表示しているのですが
中身を編集することでプルリクエストの内容を編集することができます
編集方法については次項です。

6.プルリクエストの内容を記載する

前項の画面上では編集することができません。
まず小文字のiを押してください
そうすると、最終行に 「-- INSERT --」の文字が見えます。
この状態になればファイルを編集することができますので
- 以下のように編集します。
1行目:プルリクエストのタイトル
2行目:空白
3行目以降:プルリクエスト本文
破線以降は編集しなくても問題ないです。

 **[WIP]ユーザ新規登録・ログイン機能**

**# what**
  **deviseを使用したユーザの新規登録・ログイン機能の実装**
**# why**
  **ユーザごとに投稿を編集、管理するためにはユーザの登録が必要になるため**
# ------------------------ >8 ------------------------
# Do not modify or remove the line above.
# Everything below it will be ignored.
(省略)

Write a message for this pull request. The first block
of text is the title and the rest is the description.
~                                                                                                                                                                                                                            
~                                                                               
"~/projects/pictweet/.git/PULLREQ_EDITMSG" [noeol] 9L, 349C
-- INSERT --

このままでは保存できていないので、保存します。
まずはキーボード左上のescキーを押して編集モードから抜けます
- INSERT-の表示が消えていれば編集モードから抜けていることを確認できます
そのあと「:wq! 」と入力していただくと保存して終了できます。
実際にGitHub上でも以下のような表示になっております。 Image from Gyazo

まとめ

今回はコマンドでプルリクエストを実行してみました。
実際にプルリクエストを出す際にはGitHub上で実施した方がわかりやすいのでその方法でしか実施したことがない人が多いと思います。
慣れればコマンドで実施した方がわざわざGitHubを開く必要がないので
時間短縮にはなるかもしれません。

プルリクエスの内容を編集する際の操作はサーバOSのLinuxでviコマンドで ファイルを編集して保存する操作があるのですが、その操作がわかる人は すんなり理解できるのではないかと思います。

私は幸い現職がサーバサイドのエンジニアのため、この操作はすんなり理解できましたが、興味があれば検索してもらえればと思います

以上でgitの記事については一旦お休み。また別のプログラミング言語の記事を投稿していきます。