Skip to content

Pull Requestの作成

この演習では、tpu-dsg/git-hands-onに対してPull Requestを作成します。

この演習を通して、以下のことを学びます。

  • GitやGitHubの基本的な操作
  • Pull Requestを使用した、GitHubにおける共同開発の流れ

リポジトリをフォーク

まずは、tpu-dsg/git-hands-onをフォークしましょう。

フォークは他のユーザーのリポジトリを自分のアカウントにコピーすることです。自分が書き込み権限を持たないリポジトリに対して変更を提案するには、フォークする必要があります。

  1. tpu-dsg/git-hands-onにアクセスします。
  2. ページ右上の「Fork」ボタンをクリックします。 Fork
  3. Create forkボタンをクリックします。

リポジトリをクローン

次に、フォークしたリポジトリをローカルにクローンしましょう。クローンとは、リモートリポジトリをローカルにコピーすることです。

  1. フォークした自分のリポジトリの「Code」ボタンをクリックします。
  2. HTTPSを選択し、表示されているURLをコピーします。(SSHでセットアップを行っている場合はSSHを選択します。)
  3. リポジトリのファイルを置きたい場所でターミナルを開くか、コマンドを使用して移動します。
    Terminal window
    # 例: "dsg"ディレクトリを作成し移動する場合
    mkdir dsg
    cd dsg
  4. git cloneコマンドを使用してリポジトリをクローンします。<URL>には先ほどコピーしたURLを貼り付けます。
    Terminal window
    git clone <URL>
    Terminal window
    cd git-hands-on

ブランチを作成

次に、作業用のブランチを作成しましょう。ブランチを作成することで他の作業との競合を避けることができます。

以下のコマンドを使用して、mainブランチから新しいブランチ「exercise」を作成し切り替えます。

Terminal window
git checkout -b exercise

VSCodeでは、左下の「main」(現在のブランチ名)をクリックして「新しいブランチの作成」を選択します。そしてブランチ名「exercise」を入力することでブランチを作成できます。

footer

new branch

あなたは現在、exerciseブランチにいます。コマンドを使って確認してみましょう。

Terminal window
git branch
# 以下のように表示されているはずです
# * exercise
# main

ファイルを追加

次に、このリポジトリに新しいファイルを追加しましょう。

exercise/ディレクトリに<GitHubユーザーID>.mdを作成します。例えば、The Octocatさんの場合はoctocat.mdとなります。

  • Directory.github/
  • Directorydocs/
  • Directoryexercise/
    • ユーザーID.md 作成するファイル
  • LICENSE
  • README.md

作成したMarkdownファイルに、なにか内容を追加してみましょう。良い案が思いつかないなら、以下のような内容を追加してみてください。

<ユーザーID>.md
# 吾輩は猫である
夏目漱石
吾輩は猫である。名前はまだ無い。
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。のみならず顔の真中があまりに突起している。そうしてその穴の中から時々ぷうぷうと煙を吹く。どうも咽せぽくて実に弱った。これが人間の飲む煙草というものである事はようやくこの頃知った。
[夏目漱石 吾輩は猫である - 青空文庫](https://www.aozora.gr.jp/cards/000148/files/789_14547.html)

変更をコミット

次に、作成したファイルをコミットしましょう。コミットとは変更を記録することです。これにより任意のコミット時の状態に戻すことができるようになります。

まず、コミットするファイルをステージングします。これはどの変更をコミットするかを指定する作業です。ここでは扱いませんが、行ごとに変更をステージングすることもできます。

Terminal window
git add exercise/<ユーザー名>.md
# または変更したファイルすべてをステージングする
git add .

VSCodeでは、ソース管理パネルから変更をステージングできます。

ステージ

次に、コミットメッセージをつけ、ステージングした変更をコミットします。今回は先頭にexercise: をつけることを必須とします。コミットメッセージは変更内容を簡潔に表すものであるべきです。

Terminal window
git commit -m "exercise: 吾輩は猫であるの冒頭を追加"

VSCodeでは、以下のようにコミットメッセージを入力してコミットできます。

コミット

さらに変更を加える

次に、作成したファイルにさらに変更を加えてみましょう。先ほど「吾輩は猫である」を追加した場合は、その続きを追加してみてください。

<ユーザーID>.md
# 吾輩は猫である
夏目漱石
吾輩は猫である。名前はまだ無い。
どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。のみならず顔の真中があまりに突起している。そうしてその穴の中から時々ぷうぷうと煙を吹く。どうも咽せぽくて実に弱った。これが人間の飲む煙草というものである事はようやくこの頃知った。
この書生の掌の裏でしばらくはよい心持に坐っておったが、しばらくすると非常な速力で運転し始めた。書生が動くのか自分だけが動くのか分らないが無暗に眼が廻る。胸が悪くなる。到底助からないと思っていると、どさりと音がして眼から火が出た。それまでは記憶しているがあとは何の事やらいくら考え出そうとしても分らない。
[夏目漱石 吾輩は猫である - 青空文庫](https://www.aozora.gr.jp/cards/000148/files/789_14547.html)

先ほどのコミットからの変更点を確認してみましょう。

Terminal window
git diff

VSCodeでは、ソース管理パネルから変更点を確認できます。

diff

では、先ほどと同様にステージングしてコミットしてみましょう。

Terminal window
git add exercise/<ユーザー名>.md
git commit -m "exercise: 吾輩は猫であるの第三段落を追加"

リモートリポジトリにプッシュ

次に、ローカルリポジトリの変更をリモートリポジトリにプッシュしましょう。プッシュとは、ローカルリポジトリの変更をリモートリポジトリに反映させることです。

Terminal window
git push origin exercise

VSCodeでは、ソース管理パネルの「Branchの発行」をクリックしてプッシュできます。

push

Pull Requestを作成

最後に、フォーク元のリポジトリに対してPull Requestを作成しましょう。Pull Requestとは、変更を取り込んでもらうためのリクエストです。取り込んでもらう前にレビューを受けることができます。

  1. 自分のGitHubリポジトリのページにアクセスします。
  2. 「Compare & pull request」ボタンをクリックします。
  3. 変更内容を記載し、「Create pull request」ボタンをクリックします。

Pull Requestが作成されると、リポジトリのメンテナーがレビューを行い、変更を取り込むかどうかを決定します。

マージされたら

マージされたら元のリポジトリに変更が反映されます。おめでとうございます!🎉

不要なブランチは削除しておきましょう。

Terminal window
git checkout main
git branch -D exercise

VSCodeでは、「ソース管理」横のミートボールメニューからブランチを削除できます。

delete branch