目的

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

ミッションの概要

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

このトピックの範囲:

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

フォークについて

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

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

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

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

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

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

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

  2. From the repository you open, click + in the global sidebar, then click Fork this repository under Get to work. Bitbucket displays the fork page.

    Git ブランチのフォーク

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

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

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

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

Git を使用しています

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

  1. From the forked repository in Bitbucket, click + in the global sidebar, then click Clone this repository under Get to work. Bitbucket displays the clone dialog. By default, the clone dialog sets the protocol to HTTPS unless you have already set up SSH for Git.

     

    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 アクティビティストリーム

I'm using Sourcetree!

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

  1. From the Overview page of the forked repository in Bitbucket, click the Clone in Sourcetree icon.

    Sourcetree での Bitbucket クローン

  2. Click the Clone in Sourcetree button from the popup that appears.

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

    Bitbucket の新しいクローン

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

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

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

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

  2. From Sourcetree, click the Show in Finder button.

    ファインダーでの 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. Open Sourcetree and notice that your repository has Uncommitted changes.

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

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

    Sourcetree のコミット

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

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

  10. From Sourcetree, click the Push button to push your committed changes.

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

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

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

To aww and inspire your teammates with words of wisdom, you can request your change to get added to the original repository. To do that, you create a pull request.

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

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

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

  2. Click + in the global sidebar, then click Compare branches or tags under Get to work. The Compare page has a specialized view that is available only in forked repositories.

    Git ブランチのフォーク

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

    フォークの比較

  4. If you want to see the differences between your current repository and the original repository, click the Diff tab to compare changes. If there are multiple commits, you see their cumulative changes by file in this section. Click the Side-by-side diff button to see changes displayed side-by-side. Or press the View file button to view the full file in Bitbucket.

    差分の表示

  5. Switch back to the Commits tab to see the list of commits pushed from your local repository to the fork in Bitbucket. To see the contents of a specific commit in isolation, click a Commit link and Bitbucket takes you to the Commits page.

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

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

  1. Click + in the global sidebar, then click Create a pull request under Get to work. Bitbucket displays the request form.

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

    プルリクエストの作成

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

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

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

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

最近のアクティビティ

When the repo owner clicks on your pull request, that user can Merge or Decline it. In addition to owners, anyone with access to the repository can Approve the request, which means that person reviewed the changes in the pull request.

Bitbucket のプルリクエスト
  1. Commits and Activity tabs: Click to view additional details about the pull request.
  2. Pull request actions: Repository owners can merge, edit, or decline. Anyone with repo access can approve.
  3. Files changed: Notice the files included in the pull request.

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

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