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


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


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

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

A branch represents an independent line of development for your repository. Think of it as a brand-new working directory, staging area, and project history. Before you create any new branches, you automatically start out with the main branch (called  master ). For a visual example, this diagram shows the  master  branch and the other branch with a bug fix update.

Branches are most powerful when you're working on a team. You can work on your own part of a project from your own branch, pulling updates from  master  if necessary, and then you'll merge all your work into  master  when you're ready.  Our documentation  includes more explanation of why you would want to use branches.

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

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

It's important to understand that branches are just pointers  to commits. When you create a branch, all Git needs to do is create a new pointer—it doesn’t create a whole new set of files or folders.  Before you begin, your repository looks like this:  


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

    macOS / Linux / Git Bash

    $ cd ~/repos/bitbucketstationlocations/

    Windows コマンド プロンプト

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

    $ git branch future-plans


    リポジトリ履歴は変更されず、現在のブランチへの新しいポインタのみが追加されます。新しいブランチでの作業を開始するには、使用したいブランチをチェック アウトする必要があります。

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

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

    The git checkout command works hand in hand with git branch . Because you are creating a branch to work on something new, every time you create a new branch (with git branch), you want to make sure to check it out (with  git checkout ) if you're going to use it. Now that you’ve checked out the new branch, your Git workflow looks something like this:

  4. Search for the bitbucketstationlocations folder on your local system and open it. You will notice there are no extra files or folders in the directory as a result of the new branch.
  5. Open the stationlocations file using a text editor.
  6. 別のステーションの場所を追加してファイルを変更します。

    <p>Bitbucket には次の宇宙ステーションがあります:</p>
  7. ファイルを保存して閉じます。
  8. Enter git status in the terminal window. You will see something like this:  

    $ 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")

    Notice the 
    On branch future-plans line? If you entered git status previously, the line was On branch master because you only had the one master branch. Before you stage or commit a change, always check this line to make sure the branch where you want to add the change is checked out.

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

    $ git add stationlocations
  10. Enter the git commit command in the terminal window, as shown with the following:

    $ git commit -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 マージ

Your space station is growing, and it's time for the opening ceremony of your Mars location. Now that your future plans are becoming a reality, you can merge your future-plans branch into the main branch on your local system.

Because you created only one branch and made one change, use the fast-forward branch method to merge.  You can do a  fast-forward merge because you have a linear path from the current branch tip to the target branch. Instead of “actually” merging the branches, all Git has to do to integrate the histories is move (i.e., “fast-forward”) the current branch tip up to the target branch tip. This effectively combines the histories, since all of the commits reachable from the target branch are now available through the current one.


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

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

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

    macOS / Linux / Git Bash

    $ cd ~/repos/bitbucketstationlocations/

    Windows コマンド プロンプト

    $ cd repos\bitbucketstationlocations\
  2. Enter the git status command to be sure you have all your changes committed and find out what branch you have checked out.

    $ git status
    On branch future-plans
    nothing to commit, working directory clean
  3. Switch to the master branch.

    $ git checkout master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
  4. M erge changes from the future-plans branch into the master branch.  It will look something like this:

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

    You've essentially moved the pointer for the master branch forward to the current head and your repository looks something like this:

  5. Because you don't plan on using  future-plans anymore, you can delete the branch.

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

    When you delete future-plans, you can still access the branch from master using a commit id. For example, if you want to undo the changes added from future-plans, use the commit id you just received to go back to that branch.

  6. Enter git status to see the results of your merge, which show that your local repository is one ahead of your remote repository.
    It will look something like this:

    $ 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. From the repository directory in your terminal window,  enter git push origin master to push the changes. It will result in something like this:

    $ 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)
       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. Click Source, and then click the stationlocations file.
    You can see the last change to the file has the commit id you just pushed.
  6. このファイルでコミットされた変更を確認するには、ファイル履歴リストをクリックします。次の図のようになります。


It’s time to take a break, drink a beaker of astro-vit (we all drink astro-vit on the Bitbucket space station), and marvel at your new-found powers. But don’t get caught stargazing for too long - You don't want to miss out on  the challenge of updating a teammate's repository .

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

最終更新日 2018 年 11 月 6 日


Powered by Confluence and Scroll Viewport.