目的

端末のリポジトリに名言を追加して、Git を使用したコードレビューにプルリクエストを使用する方法を学習します。

ミッションの概要

所有するリポジトリを使用した Git の概要がつかめるようになりました。 ところが、あなたのチームは宇宙を旅行中で、同じリポジトリで共同作業したい場合はどうすればよいでしょうか。このチュートリアルを完了し、一連のコードレビューについて学習してください。

このトピックの範囲:

  • チームメイトのリポジトリをフォーク、 プルリクエストを作成し、チームメイトのリポジトリに貢献します。
所要時間 対象者 前提条件
15 分 Bitbucket Cloud を使用した経験がいある程度ある方。そうでない場合は、初心者用チュートリアルのいずれかを試してください。 Git をインストール済である
    Bitbucket アカウントを持っている

フォークについて

あなたが他のユーザーの公開のBitbucketリポジトリを使用する場合、通常は、コードの読み取りアクセスは持っていても、書き込みアクセスは持っていません。ここで、フォークの概念の出番です。しくみは次のようになります。

  • リポジトリをフォークして、自分のアカウントにコピーする。
  • フォークされたリポジトリを Bitbucket からローカルシステムに複製する。
  • ローカルリポジトリに変更を加える。
  • Bitbucket で分岐したリポジトリへ変更をプッシュする。
  • フォークした元のリポジトリからプルリクエストを作成して変更を追加する。
  • リポジトリ所有者がプルリクエストを承認または拒否するのを待ちます。

リポジトリの所有者がプルリクエストを受け入れると、Bitbucket はコードの変更を元のリポジトリへとマージします。リポジトリ所有者から公開リポジトリへの書き込みアクセスを供与されている場合でも、分岐やプルリクエストで作業することをお勧めします。プルは、Git や Mercurial ワークフローの一部ですが、プルリクエストと分岐は、リポジトリのホスティングサービス(Bitbucket など)でのみ使用される概念です。

チームメートのリポジトリをフォークする

チームの全員がすべて同時に Bitbucket の宇宙ステーションに滞在している訳ではありません。そのため、星の輪の上に新しい宇宙ステーションの建設計画を立てている場合や、新しい太陽系を冒険しているときでも、誰でも参照できる名言を集めるとよいだろう、と決定しました。あなたのチームメイトは、誰でも貢献でき、インスピレーションを与えることができる考えのリポジトリを立ち上げました。あなたは、追加したい名言を決定します。

この例では、チュートリアルと呼ばれるユーザーに属する公開リポジトリをフォークします。

  1. 使用している DVCS ツールに応じて、Bitbucket の右上にある検索フィールドを使用して、以下のリポジトリのいずれかを見つけます。

  2. 開いたリポジトリから、画面左のフォークをクリックします。システムに、フォークのページが表示されます。

    Git ブランチのフォーク

  3. 名前を、myteamquotes などに変更します。

  4. 説明 フィールドに、「チームの名言」と入力します。

  5. Inherit repository user/group permissions のチェックマークを外します。

  6. フォークリポジトリ を押します。

自分のフォークをコピーしてコピーしてリポジトリに変更を加える

アドバイスのどの部分をチームメイトと共有したいかが見つかりましたか?フォークされたリポジトリのコピーを追加できるよう、ローカルシステムに取り込みましょう。 

Git を使用しています

ステップ 1. ローカルシステムへフォークをクローンする

  1. Bitbucket でフォークされたリポジトリの概要ページから、左側のクローンをクリックします。ポップアップのクローンダイアログが表示されます。既定では、Git に SSH を設定していない限り、クローンダイアログのプロトコルは HTTPS に設定されます。

    Bitbucket クローンフォーク

  2. ポップアップされた複製ダイアログから、ハイライトされている clone コマンドをコピーします。

  1. 端末ウィンドウから、ディレクトリをリポジトリディレクトリに変更します。

    $ cd ~/repos
  2. Bitbucket からコピーしたコマンドをコマンドラインン貼り付け、Return を押します。

  3. 端末から要求されたら、Bitbucket パスワードを入力します。これは、Bitbucket アカウントを作成したときに入力したパスワードです。Google やフィードバックにリンクしてアカウントを作成する場合、そのアカウントのパスワードを使用します。この時点で、ご使用の端末画面には以下のような内容が表示されます。

    $ cd ~/repos $ git clone https://emmap1@bitbucket.org/emmap1/myteamquotes.git Cloning into 'myteamquotes'... Password remote: Counting objects: 15, done.remote: Compressing objects: 100% (15/15), done.remote: Total 15 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (15/15), done.Checking connectivity... done.

    これで、ローカルシステム上に分岐されたリポジトリができました。

ステップ 2. リポジトリに変更を加える

このリポジトリには、editme.htmlファイルを持つ Web サイトが含まれます。このファイルは、宇宙のチームメートのための名言をリストします。次に、言や単なるお気に入りの引用を記録します。以下の手順を実行し、このリポジトリを操作します。

  1. Google やその他の検索エンジンを使用して、お気に入りの引用を見つけます。

  2. リポジトリファイルを含むディレクトリフォルダー (~/repos/myteamquotes など) に移動します。

  3. テキストエディタで editme.htmlファイルを開きます。

  4. 先へ進み、選択した引用を追加します。気に入った場合は、画像リンクを <blockquote> タグのすぐ上に配置して追加することができます。

    追加がどのように見えるかの例を次に示します。

    <!-- Please don't edit above or below this line.To add a quote, copy the div below and paste it at the bottom of the file.Then populate it with your quote and attribution.<div class="quote"> <blockquote>Your quote goes here</blockquote> <cite>Attribution</cite> </div> You can add an optional image tag.The image must be linked from an external site and not be in the repository.<img src="http://your_image_link.jpg"><!--Please don't edit above this line.><div class="quote"> <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Steve_Jobs_Headshot_2010-CROP.jpg/245px-Steve_Jobs_Headshot_2010-CROP.jpg"><blockquote>Put a dent in the universe.</blockquote><cite>Steve Jobs</cite> </div>

    何をしたらよいかわからない場合は、先程の例のように、ファイルの先頭のサンプルタグをコピーし、ページの最後の見積もりの下に貼り付け、自分の見積もりを使用してそれらを修正します。

  5. ファイルを保存して閉じます。

  6. 端末ウィンドウから、ディレクトリを myteamquotes に変更します。

    $ cd ~/repos/myteamquotes
  7. git status を使用してリポジトリのステータスを表示します。

    $ git status On branch master Your branch is up-to-date with 'origin/master'.Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: editme.htmlno changes added to commit (use "git add" and/or "git commit -a")

    画像ファイルを追加すると、そのファイルも表示されます。

  8. git add を使用してローカルに変更を加えます。

    $ git add editme.html
  9. git commit を使用してローカルに変更をコミットします。

    $ git commit -m "Making a change" [master 83bc100] Making a change 1 file changed, 10 insertions(+), 5 deletions(-)
  10. Bitbucket フォークに変更をプッシュするには git push を入力し、パスワードを入力して変更のプッシュを終了します。

    $ git push origin master Counting objects: 3, done.Delta compression using up to 8 threads.Compressing objects: 100% (3/3), done.Writing objects: 100% (3/3), 340 bytes | 0 bytes/s, done.Total 3 (delta 2), reused 0 (delta 0) To https://emmap1@bitbucket.org/emmap1/myteamquotes.git 7479b42..83bc100 master -> master Branch master set up to track remote branch master from origin.
  11. Bitbucket リポジトリにログインし、最近のアクティビティ ストリームにプッシュが表示されているのがわかります。

    Bitbucket アクティビティストリーム

SourceTree を使用しています

ステップ 1. ローカルシステムへフォークをクローンする

  1. Bitbucket のでフォークされたリポジトリの概要ページから、左側の SourceTree でクローンをクリックします。

    Sourcetree での Bitbucket クローン

  2. 表示されるポップアップから SourceTree でクローンボタンをクリックします。

  3. 新規クローンウィンドウから、宛先パス<local directory>/repos/myteamquotes/ に更新します。この宛先パスは、リポジトリ用に作成したばかりの repos ディレクトリを指します。

    Bitbucket の新しいクローン

  4. クローンボタンをクリックします。

ステップ 2. リポジトリに変更を加える

このリポジトリには、editme.htmlファイルを持つ Web サイトが含まれます。このファイルは、宇宙のチームメートのための名言をリストします。次に、言や単なるお気に入りの引用を記録します。以下の手順を実行し、このリポジトリを操作します。

  1. Google やその他の検索エンジンを使用して、お気に入りの引用を見つけます。

  2. SourceTree から、ファインダーで表示ボタンをクリックします。

    ファインダーでの Sourcetree ショー

  3. テキストエディタで editme.htmlファイルを開きます。

  4. 先へ進み、選択した引用を追加します。気に入った場合は、画像リンクを <blockquote> タグのすぐ上に配置して追加することができます。

    追加がどのように見えるかの例を次に示します。

    <!-- Please don't edit above or below this line.To add a quote, copy the div below and paste it at the bottom of the file.Then populate it with your quote and attribution.<div class="quote"> <blockquote>Your quote goes here</blockquote> <cite>Attribution</cite> </div> You can add an optional image tag.The image must be linked from an external site and not be in the repository.<img src="http://your_image_link.jpg"><!--Please don't edit above this line.><div class="quote"> <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Steve_Jobs_Headshot_2010-CROP.jpg/245px-Steve_Jobs_Headshot_2010-CROP.jpg"><blockquote>Put a dent in the universe.</blockquote><cite>Steve Jobs</cite> </div>

    何をしたらよいかわからない場合は、先程の例のように、ファイルの先頭のサンプルタグをコピーし、ページの最後の見積もりの下に貼り付け、自分の見積もりを使用してそれらを修正します。

  5. ファイルを保存して閉じます。

  6. SourceTree を開き、リポジトリにコミットされていない変更があることに注意してください。

    SourceTree のコミットされていない変更

  7. 一番上のコミット ボタンをクリックしてファイルをコミットします。

    SourceTree のコミット

  8. 提供されたスペースに次のコミットメッセージを入力します。*新しい見積もりを追加*

  9. メッセージボックスの下にあるコミットをクリックします。ビューに切り替えると、ファイルがコミットされ、Bitbucket リポジトリにはプッシュされていないことがわかります。

  10. SourceTree の場合は、プッシュボタンをクリックしてコミットした変更をプッシュします。

  11. 表示されるダイアログボックスで、OK をクリックしてリポジトリにコミットをプッシュします。

  12. Bitbucket リポジトリにログインし、最近のアクティビティ ストリームにプッシュが表示されているのがわかります。

プルリクエストを作成する

賢明な言葉でチームメイトを感心させるため、変更を元のリポジトリに追加するようリクエストできます。これを行うには、プルリクエストを作成できます。

ステップ1. フォークをオリジナルと比較する

あなたが見積もりの追加に取り組んでいた間に、別のチームメイトは元のリポジトリへ更新を加えていたかもしれません。この時点で、フォークを調節する必要があるかどうかを確認して決定します。以下を実行し、リポジトリと変更を比較します。

  1. Bitbucket にログインし、myteamquotes リポジトリに移動します。フォークしたリポジトリには、フォーク作業をオリジナルと比較できる特別なウィジェットがあります。

  2. ページ左の 比較 リンクをクリックします。比較 セクションには、フォークされたリポジトリでのみ利用可能な専用ビューがあります。

    Git ブランチのフォーク

  3. フォークしたリポジトリを元のリポジトリと比較するには、比較ボタンを押します。

    フォークの比較

  4. あなたがフォークした後に誰かが元のリポジトリに変更を加えた場合、あなたのフォークされたリポジトリが、オリジナルの背後にある 1 つ以上のコミットであることがわかります。その場合は、リポジトリを更新するには、表示されるポップアップで今すぐ同期同期の順にクリックします。現在のリポジトリと元のリポジトリとの違いを確認したい場合は、差分タブをクリックして変更内容を比較します。複数コミットがある場合は、このセクションでは、ファイル別に累積変化を確認します。変更を並べて表示するには、横並び差分ボタンをクリックします。または、Bitbucket で完全なファイルを表示するには、ファイル表示ボタンを押します。

    差分の表示

  5. Bitbucket でローカルリポジトリからフォークにプッシュされたコミットのリストを表示するには、コミットタブに切り替えます。分離されている特定のコミットのコンテンツを見るには、コミットリンクをクリックすると、Bitbucket によってコミットページに移動します。

ステップ 2. プルリクエストを作成する

次に、全員が見ることができるよう、引用を元のリポジトリに追加するようリクエストします。Bitbucket の myteamquotes リポジトリから、次の手順を実行します。

  1. プルリクエストの作成をクリックします。システムに、リクエストフォームが表示されます。

  2. フォームに記入します。今日のところは、タイトルだけを追加してください。完了すると、次のようになります。

    プルリクエストの作成

  3. プルリクエストの作成をクリックします。チュートリアルアカウントで元のリポジトリプルリケエストページにある最新のリクエストが開きます。このリポジトリに対するすべてのプルリクエストのリストを見るには、プルリクエストタブをクリックします。

プルリクエストを作成した後で削除することはできません。リクエストを行った後にフォークを削除すると、プルリクエストへのリポジトリがなくなっているため、受信者はリクエストを却下することしかできません。

ステップ3. プルリクエストに何が起こるかを学習する

リポジトリ所有者がプルリクエストを承認するのを待つ必要があります。元のリポジトリの所有者が Bitbucket にログインすると、次の図に示すように、そのユーザーのニュースフィードは、数日前からのプルリクエストとフォークを示します。

最近のアクティビティ

リポジトリの所有者が自分のプルリクエストをクリックすると、そのユーザーは、マージ編集、または拒否することができます。所有者以外にも、リポジトリにアクセスできる人物であれば誰でも、リクエストを承認できます。これは、その人物がプルリクエストの変更のレビューを行ったことを意味します。

Bitbucket のプルリクエスト

リポジトリに貢献してきました!

プルリクエストが承認または拒否されるとメールが届きます。待っている間に、Bitbucket で別の作業を試したい場合は、課題トラッカーの有効化Wiki の設定ユーザーパーミッションの追加をご覧ください。