Git ブランチを使用してファイルをマージする

このページの内容

Still need help?

アトラシアン コミュニティをご利用ください。

コミュニティへの質問

  1. Git リポジトリを作成する
  2. Git リポジトリをコピーしてファイルを追加する
  3. Bitbucket Cloud で Git リポジトリから変更をプルする
  4. Git ブランチを使用してファイルをマージする

宇宙ステーションの管理者になるには、特定の責任が伴います。太陽系の新しい場所のマップを作成する場合など、情報をロックダウンする必要があることがあります。ブランチについて学習することで、ファイルを更新し、準備が整った場合にのみ情報を共有できるようになります。  

ブランチは、チームで作業する際に最も力を発揮します。自分のブランチで、プロジェクトの担当部分で作業し、Bitbucket から更新をプルした後、準備が整ったらすべての作業をメイン ブランチにマージできます。アトラシアンのドキュメントでは、ブランチを使用する理由についてさらに説明しています。

ブランチは、リポジトリで、開発の独立したラインを表します。まったく新しい作業ディレクトリ、ステージング領域、プロジェクト履歴のようなものと考えてください。新しいブランチを作成する前は、自動的にメイン ブランチ (master ブランチと呼ばれる) から開始します。この図では、master ブランチと、バグ修正のアップデートを含む他のブランチを例示しています。



ステップ1. ブランチを作成して変更する

宇宙ステーションの今後の計画を追加するための、コミット準備中のブランチを作成します。計画を全員に伝える準備が整ったら、Bitbucket リポジトリに変更をマージし、不要になったブランチは削除できます。

ブランチはコミットに対するポインターであることを理解しておくことが重要です。ブランチを作成する際、Git は新しいポインターを作成します。一連の新しいファイルやフォルダーを作成するわけではありません。手順を開始する前のリポジトリは、次のようになります。


ブランチを作成するには、以下を実行します。

  1. ターミナル ウィンドウを開き、次のコマンドを使用してローカル リポジトリの最上位に移動します。 

    $ cd ~/repos/bitbucketstationlocations/
  2. ターミナル ウィンドウからブランチを作成します。

    $ git branch future-plans

    This command creates a branch but does not switch you to that branch, so your repository looks something like this:

    The repository history remains unchanged. All you get is a new pointer to the current branch. To begin working on the new branch, you have to check out the branch you want to use.

  3. 先ほど作成した新しいブランチをチェックアウトして、使い始めます。

    $ git checkout future-plans
    Switched to branch 'future-plans'

    git checkout コマンドは git branch と連携して機能します。新しい作業を行うためにブランチを作成するため、git branch を使用して新しいブランチを作成するたびに、git checkout を使用してチェック アウトする必要があります。新しいブランチをチェック アウトすると、Git ワークフローは次のようになります。

  4. ローカル システムで bitbucketstationlocations フォルダーを検索して開きます。新しいブランチ作成の結果として、ディレクトリに新しいファイルやフォルダーは追加されていないことがわかります。
  5. テキスト エディターで stationlocations ファイルを開きます。
  6. 別のステーションの場所を追加してファイルを変更します。

    <p>Bitbucket には次の宇宙ステーションがあります:</p>
    <p>
        <b>地球の月</b><br>
        本部
    </p>
    <p>
        <b>Mars</b><br>
        レクリエーション部門
    </p>
  7. ファイルを保存して閉じます。
  8. ターミナル ウィンドウに git status と入力します。次のように表示されるはずです。 

    $ git status
    On branch future-plans
    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: stationlocations
    no changes added to commit (use "git add" and/or "git commit -a")

    On branch future-plans 行が表示されています。過去に  git status入力していた場合、この行は On branch master となります。これは、master ブランチは 1 つしか持つことができないためです。変更をステージングまたはコミットする前に必ずこの行を確認し、変更を追加するブランチがチェック アウトしたものであるかどうかを確認するようにします。

  9. ファイルをステージングします。

    $ git add stationlocations
  10. 以下のように、ターミナル ウィンドウに git commit コマンドを入力します。

    $ git commit stationlocations -m 'making a change in a branch'
    [future-plans e3b7732] making a change in a branch
     1 file changed, 4 insertions(+)

    このコミットで、リポジトリは次のようになります。


    Now it's time to merge the change that you just made back into the master branch.

ステップ2. ブランチのマージ: fast-forward マージ

宇宙ステーションは成長を続けており、火星の拠点で開会式を行うときがやってきました。ここで、今後の計画が現実のものとなったため、future-plans ブランチをローカル システムの main ブランチにマージできます。

1 つのブランチのみを作成して 1 つの変更を加えたため、fast-forward ブランチ方式でマージを行います。ターゲット ブランチに対して現在のブランチの先頭が線形のパスになっているため、fast-forward マージを実行できます。ブランチを実際にマージする代わりに、Git は現在のブランチの先頭をターゲット ブランチの先頭に移動して (fast-foward (早送り) する)、履歴を統合します。これによって、ターゲット ブランチからアクセス可能なすべてのコミットが現在のブランチで利用できるようになるため、履歴を効果的に組み合わせることができます。

 

このブランチ ワークフローは小さな変更を伴う短期間のトピック ブランチに共通しており、長期間実行されているような機能では一般的ではありません。

fast-forward マージを完了させるには、次の手順を行います。

  1. ターミナル ウィンドウを開き、ローカル リポジトリの最上位に進みます。

    $ cd ~/repos/bitbucketstationlocations/
  2. git status コマンドを入力して、すべての変更がコミットされたことと、チェック アウトしたブランチを確認します。

    $ git status
    On branch future-plans
    nothing to commit, working directory clean

     

  3. master ブランチに切り替えます。

    $ git checkout master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
  4. future-plans ブランチの変更を master ブランチにマージします。 次のようになります:

    $ git merge future-plans
    Updating fcbeeb0..e3b7732
    Fast-forward
     stationlocations | 4 ++++
     1 file changed, 4 insertions(+)

    これで、master ブランチのポインターを現在の先頭に移動させました。リポジトリは次のようになります。

  5. future-plans を今後使用する予定はないため、このブランチを削除できます

    $ git branch -d future-plans
    Deleted branch future-plans (was e3b7732).

    future-plans を削除しても、コミット ID を使用して master からブランチにアクセスできます。たとえば、future-plans に追加した変更を元に戻したい場合は、受け取ったばかりのコミット ID を使用してそのブランチに戻ります。

  6. git status と入力してマージの結果を確認します。リモート リポジトリの 1 つ前にローカル リポジトリが表示されます。
    次のようになります。

    $ git status
    On branch master
    Your branch is ahead of 'origin/master' by 1 commit.
      (use "git push" to publish your local commits)
    nothing to commit, working directory clean

ここまでの操作で、次の内容を実行しました。

  • ブランチの作成とチェックアウト
  • 新しいブランチへの変更
  • 新しいブランチへの変更のコミット
  • メイン ブランチへの変更の統合
  • 不要になったブランチの削除

次に、この作業すべてを、リモート リポジトリである Bitbucket にプッシュする必要があります。

ステップ 3. 変更を Bitbucket にプッシュする

自分以外の全員が新しい宇宙ステーションの場所を見られるようにしたい場合、ローカル リポジトリの現在の状態を Bitbucket にプッシュすることで実現できます。

以下の図は、中央リポジトリにない変更がローカル リポジトリにあるときに、それらの変更を Bitbucket にプッシュした時に何が起こるかを示しています

  リモート リポジトリに変更をプッシュする方法は次のとおりです。

  1. ターミナル ウィンドウのリポジトリ ディレクトリで、git push origin master と入力して変更をプッシュします。次のような結果になります。

    $ 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), 401 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
       fcbeeb0..e3b7732 master -> master
  2. Bitbucket リポジトリの概要ページをクリックすると、最近のアクティビティストリームにプッシュが表示されます。

  3. Click Commits and you can see the commit you made on your local system. Notice that the change keeps the same commit id as it had on your local system.

    You can also see that the line to the left of the commits list has a straight-forward path and shows no branches. That’s because the future-plans branch never interacted with the remote repository, only the change we created and committed.
  4. ブランチ をクリックすると、ページのいずれのブランチにもレコードがないことがわかります。
  5. ソース をクリックしてから、stationlocations ファイルをクリックします。
    先ほどプッシュしたコミット ID を持つファイルに対する最後の変更を確認できます。
  6. このファイルでコミットされた変更を確認するには、ファイル履歴リストをクリックします。次の図のようになります。

完了です!

ここで少し休憩を取りましょう。次に、チームメイトのリポジトリの更新」をご覧ください。

学習したすべての Git コマンドを覚える自信がなくても、問題はありません。必要な時に参照できるよう、「Git と Mercurial のコマンド」ページをブックマークしておくことをおすすめします。

最終更新日 2017 年 8 月 1 日

この翻訳に満足しましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.