目的

Learn the basics of Git with this space themed tutorial. 

ミッションの概要

Your mission is to learn the ropes of Git by completing the tutorial and tracking down all your team's space stations. Commands covered in this tutorial:

  • git clone, git config, git add, git status, git commit, git push, git pull, git branch, git checkout, and git merge
所要時間 対象者 前提条件
30 分 Git リポジトリと Bitbucket Cloud を初めて使用する場合 You have installed Git
    You have a Bitbucket account

Git リポジトリを作成する

As our new Bitbucket space station administrator, you need to be organized. When you make files for your space station, you’ll want to keep them in one place and shareable with teammates, no matter where they are in the universe. With Bitbucket, that means adding everything to a repository. Let’s create one!

  • リポジトリの醍醐味

    • 作業中のファイルが1つか、複数かに関係なく、ローカルリポジトリですべてのファイルにアクセスできます。
    • Bitbucket アカウントがなくてもパブリックリポジトリの URL を知っていれば表示できます。
    • 各リポジトリは、ユーザーアカウントまたはチームに帰属します。ユーザーアカウントの場合、そのユーザーはリポジトリを所有しています。一方、チームの場合、リポジトリはそのチームの所有になります。
    • リポジトリ所有者はリポジトリを削除できる唯一のユーザーです。リポジトリがチームに帰属する場合、管理者がリポジトリを削除できます。
    • コードプロジェクトは、複数のアカウントが関係する複数のリポジトリで構成されますが、単一アカウントの単一リポジトリでも可能です。
    • 各リポジトリのサイズは 2 GB に制限されていますが、1 GB を超えないように利用することをお勧めします。

ステップ 1. リポジトリの作成

最初に、Bitbucket で作成するリポジトリにはコードは入っておらず空の状態です。これからいくつかのファイルを追加していくので空で問題ありません。Bitbucket リポジトリはご使用のファイルの中央リポジトリになり、権限を与えられたユーザーはそのリポジトリにアクセスできます。 リポジトリの作成後、ローカルシステムにバージョンをコピーします。このようにして、1つのリポジトリから別のリポジトリへ変更を転送することでリポジトリを更新できます。

中央リポジトリからローカルリポジトリへ

以下に従ってリポジトリを作成します。

  1. From Bitbucket, click Repositories > Create repository button at the top of the page.

    リポジトリメニューの作成

    The system displays the Create a new repository page. Take some time to review the dialog's contents. With the exception of the Repository type, everything you enter on this page you can later change.

    リポジトリの作成

  2. Enter BitbucketStationLocations for the Name field. Bitbucket uses this Name in the URL of the repository. For example, if the user the_best has a repository called awesome_repo, the URL for that repository would be https://bitbucket.org/the_best/awesome_repo.

  3. For Access level, leave the This is a private repository box checked. A private repository is only visible to you and those you give access to. If this box is unchecked, everyone can see your repository.

  4. Pick Git for the Repository type. Keep in mind that you can't change the repository type after you click Create repository.

  5. Click Create repository. Bitbucket creates your repository and displays its Overview page.

ステップ 2. リポジトリの探索

Take some time to explore the repository you have just created. You should be on the repository's Overview page:

リポジトリの概要

Click items on the Navigation menu to see what is behind each one. To view the shortcuts available to navigate these items, press the ? key on your keyboard.

When you click the Commits option on the menu bar, you find that you have no commits because you have not created any content for your repository. Your repository is private and you have not invited anyone to the repository, so the only person who can create or edit the repository's content right now is you, the repository owner.

Git リポジトリをコピーしてファイルを追加する

これで、宇宙ステーションファイルを追加および共有する場所ができました。次に、ローカルシステムからそれらを取得する方法が必要です。これを設定するには、Bitbucket リポジトリを自分のシステムにコピーします。Git では、はリポジトリのコピーを「クローン」と呼びます。リポジトリをクローンする際、Bitbucket サーバー (Git が原点として認識しているサーバー) とローカルシステムの間で接続を確立します。

原点からローカル

You are about to use a whole bunch of Git and non-Git commands from a terminal. If you've never used the command line before, learn where to find it at The Command Line Crash Course.

ステップ 1. ローカルシステム上でリポジトリをクローンする

デスクトップでブラウザーと端末ウィンドウを開きます。端末ウィンドウを開いた後、次の手順を実行します。

  1. Navigate to your home (~) directory.

    $ cd ~

    Bitbucket を使用すればするほど、おそらく複数のリポジトリで作業することになります。そのため、すべてのリポジトリを含むディレクトリを作成すると便利です。

  2. Create a directory to contain your repositories.

    $ mkdir repos
  3. 端末から、新しいリポジトリディレクトリで作業したいディレクトリを更新します。

    $ cd ~/repos
  4. From Bitbucket, go to your BitbucketStationLocations repository.

  5. Click Clone.

    ポップアップクローンダイアログが表示されます。既定では、クローンダイアログはご使用の設定に応じて、 HTTPS または SSH に対してプロトコルを設定します。このチュートリアルの目的のため、既定のプロトコルを変更しなようにしてください。

     

    クローンダイアログ

     

  6. 強調表示されたクローンコマンドをコピーします。

  7. From your terminal window, paste the command you copied from Bitbucket and press Return.

  8. 端末から要求されたら、Bitbucket パスワードを入力します。Google にリンクしてアカウントを作成する場合、そのアカウントのパスワードを使用します。

    • If you experience a Windows password error:

      • Microsoft Windows オペレーティングシステムの一部のバージョンと Git の組み合わせでは、次のようなエラーが発生する場合があります。

        Windows クローンパスワードエラーの例

         $ git clone https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git Cloning into 'bitbucketspacestation'... fatal: could not read Password for 'https://emmap1@bitbucket.org': No such file or directory
      • If you get this error, enter the following at the command line:

         $ git config --global core.askpass
      • 次に、ステップ 4 に戻って複製プロセスを繰り返します。このとき、bash エージェントによってパスワードが要求されます。この操作は 1 度のみ実行する必要があります。

      この時点で、ご使用の端末画面には以下のような内容が表示されます。

       
      $ cd ~/repos
      $ git clone https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git Cloning into 'bitbucketstationlocations'... Password warning: You appear to have cloned an empty repository.

      ご使用のリポジトリは空でしたね?まだソースファイルを追加していなかったことを思い出してください。

  9. List the contents of your repos directory and you should see your bitbucketstationlocations directory in it.

    $ ls

Congratulations! You've cloned your repository to your local system.

ステップ 2. ファイルをローカルリポジトリに追加して、Bitbucket に配置します。

ローカルシステムのリポジトリで、作業を始めましょう。全宇宙ステーションの場所の追跡を開始しましょう。これを行うには、すべての場所についてファイルを作成します。

  1. 端末画面で、ローカルリポジトリのトップレベルに移動します。

    $ cd ~/repos/bitbucketstationlocations/
  2. 次の行を端末ウィンドウに入力して、新しいファイルとコンテンツを作成します。

    $ echo "Earth's Moon" >> locations.txt

    If the command line doesn't return anything, it means you created the file correctly!

  3. Get the status of your local repository. The git status command tells you about how your project is progressing in comparison to your Bitbucket repository.

    この時点で、Git は新しいファイルが作成されたことを認識し、次のような内容が表示されます。

    $ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) locations.txtnothing added to commit but untracked files present (use "git add" to track)

    ファイルは追跡されません。つまり、Git は以前のコミットの一部でないファイルを確認します。ステータス出力にも次のステップ(ファイルの追加)が表示されます。

  4. Tell Git to track your new locations.txt file using the git add command. Just like when you created a file, the git add command doesn't return anything when you enter it correctly.

    $ git add locations.txt

    The git add command moves changes from the working directory to the Git staging area. The staging area is where you prepare a snapshot of a set of changes before committing them to the official history.

     

    Git はステージングを追加する

     

  5. このフィルのステータスを確認します。

    $ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: locations.txt

    Now you can see the new file has been added (staged) and you can commit it when you are ready. The git status command displays the state of the working directory and the staged snapshot.

  6. Issue the git commit command with a commit message, as shown on the next line. The -m indicates that a commit message follows.

    $ git commit -m 'Initial commit' [master (root-commit) fedc3d3] Initial commit 1 file changed, 1 insertion(+) create mode 100644 locations.txt

    The git commit takes the staged snapshot and commits it to the project history. Combined with git add, this process defines the basic workflow for all Git users.

     

    git commit

     

    ここまでで、作成したものはローカルシステムにあり、変更をプッシュするまで、Bitbucket リポジトリには反映されません。

    • Git とリモートリポジトリの詳細を学習しましょう。

      • リモートリポジトリと通信する Git の機能 (この場合、Bitbucket がリモートリポジトリです) は、あらゆる Git ベースのコラボレーションワークフローの基盤です。

      • Git のコラボレーションモデルでは、各開発者にリポジトリのコピーがあり、ローカルの履歴やブランチ構造を完全な形で保有しています。開発者は、他の開発者と個々の変更を共有する必要はなく、通常は一連のコミットをまとめて共有します。Git では作業コピー内の個々の変更項目を中央リポジトリにコミットするのではなく、ブランチ全体をリポジトリ間で共有します。

         

        Git ブランチング

         

      • 他のリポジトリとの接続を管理し、他のリポジトリにブランチを "プッシュ" することによってローカルの履歴を公開します。ブランチをローカルリポジトリに "プル" することによって他の開発者の進捗状況を確認することができます。

  7. Go back to your local terminal window and send your committed changes to Bitbucket using git push origin master. This command specifies that you are pushing to the master branch (the branch on Bitbucket) on origin (the Bitbucket server).

    次のような応答が表示されます。

    $ git push origin master Counting objects: 3, done.Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.Total 3 (delta 0), reused 0 (delta 0) To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git* [new branch] master -> master Branch master set up to track remote branch master from origin.

    コミットは今、リモートリポジトリ (起点) にあります。

     

    Git のプッシュ

     

  8. Go to your BitbucketStationLocations repository on Bitbucket and click the Commits item on the menu bar.

  9. You should see a single commit on your repository. Bitbucket combines all the things you just did into that commit and shows it to you. You can see that the Author column shows the value you used when you configured the Git global file ( ~/.gitconfig).

    Bitbucket コミット

  10. ソースオプションをクリックします。

    リポジトリに 1 つのソースファイル(先程追加した locations.txt)があると表示されます。

    Bitbucket ソース

Remember how the repository looked when you first created it? It probably looks a bit different now.

Bitbucket クラウドで Git リポジトリから変更をプルする

次に、宇宙ステーション管理者アクティビティのリストでは、場所に関する詳細情報を含むファイルが必要です。今は多くの場所がないため、Bitbucket から直接す追加します。

ステップ 1. Bitbucket でのファイルの作成

新しい場所のファイルを追加する手順

  1. From your BitbucketStationLocations repository, click Source to open the source directory. Notice you only have one file, locations.txt , in your directory.

    Bitbucket ソースウィンドウ

  2. From the Source page, click New file in the top right corner. This button only appears after you have added at least one file to the repository.

    A page for creating the new file opens, as shown in the following image.

    Bitbucket の新しいファイル

  3. Enter stationlocations in the filename field.

  4. Select HTML from the Syntax mode list.

  5. 次の HTML コードをテキストボックスに追加します。

    <p>Bitbucket has the following space stations:</p> <p> <b>Earth's Moon</b><br> Headquarters </p>
  6. Click Commit. The Commit message field appears with the message: stationlocations created online with Bitbucket.

  7. Click Commit under the message field.

You now have a new file in Bitbucket! You are taken to a page with details of the commit, where you can see the change you just made:

Bitbucket のコミットメッセージ

If you want to see a list of the commits you've made so far, click the Commits link on the left side.

ステップ 2. リモートリポジトリから変更をプル

Now we need to get that new file into your local repository. The process is pretty straight forward, basically just the reverse of the push you used to get the locations.txt file into Bitbucket.

To pull the file into your local repository, do the following:

  1. Open your terminal window and navigate to the top level of your local repository.

    $ cd ~/repos/bitbucketstationlocations/
  2. Enter the git pull --all command to pull all the changes from Bitbucket. (In more complex branching workflows, pulling and merging all changes might not be appropriate .) Enter your Bitbucket password when asked for it. Your terminal should look similar to the following:

    $ git pull --all Fetching origin remote: Counting objects: 3, done.remote: Compressing objects: 100% (3/3), done.remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done.From https://bitbucket.org/emmap1/bitbucketstationlocations fe5a280..fcbeeb0 master -> origin/master Updating fe5a280..fcbeeb0 Fast-forward stationlocations | 5 ++++++++++++++ 1 file changed, 5 insertions(+) create mode 100644 stationlocations

    The git pull command merges the file from your remote repository (Bitbucket) into your local repository with a single command.

    原点からローカル

  3. ローカルシステムのリポジトリフォルダーに移動すると、追加したファイルが表示されます。

Fantastic! With the addition of the two files about your space station location, you have performed the basic Git workflow (clone, add, commit, push, and pull) between Bitbucket and your local system.

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

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

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, pull updates from Bitbucket, and then merge all your work into the main branch when it's ready. Our documentation includes more explanation of why you would want to use branches.

ブランチとは、ご使用のリポジトリの独立した開発ラインを意味します。まったく新しい作業ディレクトリやステージングエリア、プロジェクト履歴として、ブランチをとらえることもできます。新しいブランチを作成する前に、自動的にメインブランチ (マスターと呼びます) で作業に取り掛かることになります。次の図は、マスターブランチとその他のバグ修正更新のブランチを視覚的にわかるように示したものです。

Git ブランチング

ステップ 1: ブランチの作成と変更

まだコミットする準備が完了していない宇宙ステーションの今後の計画を追加できる場所にブランチを作成します。これらの計画を公開する準備ができたら、Bitbucket リポジトリに変更をマージし、その後で不要になったブランチを削除することができます。

ブランチが単なるコミットへのポインターであることを理解する必要があります。ブランチを作成したとしても、Git が行うのは新しいポインターの生成であり、ファイルやフォルダーの新しいセットを作成するのではありません。従って、開始する前、リポジトリは次のようになります。

マスターブランチ

ブランチを作成するには、次の手順を実行します。

  1. 端末ウィンドウで、次のコマンドを使用してローカルリポジトリのトップレベルに移動します。

    $ 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 has the following space stations:</p> <p> <b>Earth's Moon</b><br> Headquarters </p> <p> <b>Mars</b><br> Recreation Department </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 stationlocations -m 'making a change in a branch' [future-plans e3b7732] making a change in a branch 1 file changed, 4 insertions(+)

    With this recent commit, your repository looks something like this:

     

    フィーチャーブランチのコミット

     

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

ステップ 2. ブランチのマージ: 早送りマージ

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.

1つのブランチのみ作成し、1つの変更を行ったので、ブランチを早送りする方法を使用してマージします。早送りマージ は 現在のブランチの先端からターゲットブランチに向かって 1 本の直線的なパスのみが通っている場合に適用されます。この場合は、"実際に" ブランチがマージされるわけではなく、単に現在のブランチの先端をターゲットブランチ の先端に移動させることによって (即ち「早送り」によって) 履歴の統合が行われます。これによって実質的に履歴の結合が行われ、ターゲットブランチからアクセス可能であったコミットがすべて現在のブランチからアクセスで きるようになります。

早送りマージ

このブランチワークフローは、一時的なトピックブランチで変更も小規模な場合に一般的ですが、長期的なフィーチャーでは一般的とはいえません。

早送りマージを完了する手順

  1. 端末画面で、ローカルリポジトリのトップレベルに移動します。

    $ 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. Merge changes from the future-plans branch into the master branch. It will look something like this:

    $ git merge future-plans Updating fcbeeb0..e3b7732 Fast-forward 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 the fast forward merge above.

  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) To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.gitfcbeeb0..e3b7732 master -> master
  2. Click the Overview page of your Bitbucket repository, and notice you can see your push in the Recent Activity stream.

  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. Click Branches and notice that the page has no record of the branch either.

  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. ファイル履歴リストをクリックして、このファイルにコミットされた変更を表示します。次の図と類似した内容が表示されます。

    ファイル履歴

完了しました!

Not sure you will be able to remember all the Git commands you just learned? No problem. Bookmark our basic Git commands page so that you can refer to it when needed.