Bitbucket Cloud での Git の使用方法
目的
この包括的な Git トレーニングで、Git の基本を学習しましょう。
ミッションの概要
あなたのミッションは、このチュートリアルで Git を学び、チームの宇宙ステーションをすべて追跡していくことです。このチュートリアルで説明するコマンドは次のとおりです。
- git clone、git config、git add、git status、git commit、git push、git pull、git branch、git checkout、git merge
時間 | 対象者 | 前提条件 |
---|---|---|
30 分 | Git と Bitbucket Cloud を初めて使用する場合 | Git をインストール済みの場合 |
Bitbucket アカウントを持っている場合 |
Git リポジトリを作成する
新しい Bitbucket 宇宙ステーションの管理者として、整理を行う必要があります。宇宙ステーション用にファイルを作成する時は、それらを 1 箇所に保存してチームメイトが宇宙のどこにいても共有できるようにします。Bitbucket では、これはリポジトリにすべてを追加するということを意味します。1 つ作成してみましょう。
リポジトリに関するいくかの興味深い事実
- 作業中のファイルが 1 個でも複数の場合でも、ローカルリポジトリのすべてのファイルにアクセスできます。
- リポジトリへの URL がわかっていれば、Bitbucket アカウントがなくてもパブリックリポジトリを表示できます。
- 各リポジトリはユーザーアカウントまたはチームに属しています。ユーザーアカウントの場合、そのリポジトリの所有者はユーザーで、チームの場合はそのリポジトリの所有者はチームです。
- リポジトリを削除できるのは、リポジトリの所有者のみです。リポジトリがチームに属している場合、管理者がリポジトリを削除できます
- コードプロジェクトは複数のアカウントにまたがる複数のリポジトリで構成できますが、1 つのアカウントで使用する 1 つのリポジトリにすることもできます。
- 各リポジトリのサイズ制限は 2GB ですが、お使いのリポジトリが 1GB を超えないようにすることをお勧めします。
ステップ 1. リポジトリの作成
Bitbucket に作成したリポジトリは最初はコードが入っておらず空の状態ですが、すぐにファイルが追加されていくため問題ありません。この Bitbucket リポジトリはファイルを収納する中央リポジトリであり、権限が与えられたユーザーもアクセスできます。リポジトリの作成後に、ローカルシステムにバージョンをコピーします。このように、1 つのリポジトリから別のリポジトリへ変更を転送することでリポジトリを更新できます。
以下に従ってリポジトリを作成します。
-
Bitbucket のグローバルサイドバーで + アイコンをクリックし、[リポジトリ] を選択します。
[新しいリポジトリの作成] ページが表示されます。少し時間をかけ、ダイアログの内容を確認します。[リポジトリタイプ] を除き、このページに入力した内容はすべて後から変更できます。
-
「
BitbucketStationLocations
」を [名前] フィールドに入力します。Bitbucket はリポジトリの URL にこの [名前] を使用します。たとえば、ユーザーthe_best
がawesome_repo
というリポジトリを持っている場合、そのリポジトリの URL はhttps://bitbucket.org/the_best/awesome_repo
になります。 -
アクセスレベルでは、[これは非公開リポジトリです] ボックスを選択したままにします。非公開リポジトリは、自分と、アクセス権を与えられたメンバーのみが見ることができます。このボックスをオフにした場合、誰でもこのリポジトリを見ることができます。
-
[リポジトリタイプ] で Git を選択します。[リポジトリの作成] をクリックした後でリポジトリタイプを変更することはできません。
-
[リポジトリの作成] をクリックします。Bitbucket によってリポジトリが作成され、[概要] ページが表示されます。
ステップ 2. リポジトリの探索
少しの間、作成したばかりのリポジトリを探索します。現在、リポジトリの [概要] ページが表示されているはずです。

リポジトリに対する一般的な操作を行うには、グローバルサイドバーの + をクリックします。ナビゲーションサイドバーの各項目をクリックすると、その内容が表示されます。たとえば、リポジトリの詳細やその他の設定を更新するには、[設定] をクリックします。キーボードで ? キーを押すと、これらの項目間を移動するために利用できるショートカットが表示されます。
サイドバーで [コミット] をクリックすると、リポジトリにコンテンツを作成していないため、コミットがないことがわかります。リポジトリは非公開になっており、誰もリポジトリに招待していません。そのため、この時点でリポジトリのコンテンツを作成または編集できるのは、リポジトリの所有者であるあなただけです。
Git リポジトリをコピーしてファイルを追加する
これで、宇宙ステーションファイルを追加および共有する場所ができました。次に、ローカルシステムからそれらを取得する方法が必要です。これを設定するには、Bitbucket リポジトリを自分のシステムにコピーします。Git では、リポジトリのコピーを「クローン」と呼びます。リポジトリをクローンする際、Bitbucket Server (Git が原点として認識しているサーバー) とローカルシステムの間で接続を確立します。
ステップ 1. ローカルシステム上でリポジトリをクローンする
デスクトップでブラウザーと端末ウィンドウを開きます。端末ウィンドウを開いた後、次の手順を実行します
。-
ホーム (〜) ディレクトリに移動します。
$ cd ~
Bitbucket を使用することが増えると、複数のリポジトリで作業するようになります。このため、使用するすべてのリポジトリを含んだディレクトリを作成するようお勧めします。
-
自分のリポジトリを含むディレクトリを作成します。
$ mkdir repos
-
端末から、新しいリポジトリディレクトリで作業したいディレクトリを更新します。
$ cd ~/repos
-
Bitbucket から、BitbucketStationLocations リポジトリに移動します。
-
グローバルサイドバーで + アイコンをクリックし、[このリポジトリをクローンする] を選択します。
Bitbucket にポップアップクローンダイアログが表示されます。クローンダイアログに表示される既定のプロトコルは、設定画面で HTTPS または SSH に設定されています。このチュートリアルの際は、既定のプロトコルを変更しないようにしてください。
-
ハイライトされている clone コマンドをコピーします。
-
端末ウィンドウで、Bitbucket からコピーしたコマンドを貼り付け、[戻る] を押します。
-
端末から要求されたら、Bitbucket パスワードを入力します。Google にリンクしてアカウントを作成する場合、そのアカウントのパスワードを使用します。
-
Windows パスワードエラーが発生した場合:
-
Microsoft Windows の OS および 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
-
このエラーが表示されたら、コマンドラインに以下を入力します。
$ 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.
予想どおり、リポジトリは空の状態でした。リポジトリにまだソースファイルが追加されていないことを覚えておいてください。
-
-
-
リポジトリディレクトリのコンテンツをリストすると、
bitbucketstationlocations
ディレクトリが表示されます。$ ls
おめでとうございます。これで、ローカルシステム上でリポジトリをクローンしました。
ステップ 2. ファイルをローカルリポジトリに追加して、Bitbucket に配置します。
ローカルシステムのリポジトリで、作業を始めましょう。全宇宙ステーションの場所の追跡を開始します。まず、すべての場所のファイルを作成しましょう。
-
ターミナルウィンドウでローカルリポジトリの最上位レベルに移動します。
$ cd ~/repos/bitbucketstationlocations/
-
以下の行をターミナルウィンドウに入力して、コンテンツを含む新しいファイルを作成します。
$ echo "Earth's Moon" >> locations.txt
コマンドラインから何も返ってこなければ、ファイルは正しく作成されています !
-
ローカルリポジトリのステータスを取得します。
git status
のコマンドは、Bitbucket リポジトリと比較して、プロジェクトの進捗状況を伝えます。この時点で、Git は新しいファイルが作成されたことを認識し、次のような内容が表示されます。
$ git status On branch master Initial commit Untracked files: (use "git add
..." to include in what will be committed) locations.txt nothing added to commit but untracked files present (use "git add" to track) ファイルは追跡されません。つまり、Git は以前のコミットの一部でないファイルを確認します。ステータス出力にも次のステップ (ファイルの追加) が表示されます。
-
Git に対し、
git add
コマンドを使用して新しいlocations.txt
ファイルを追跡するよう伝えます。ファイルを作成したときのように、正しく入力されていればgit add
コマンドは何も返しません。$ git add locations.txt
git add
コマンドは変更を作業ディレクトリから Git ステージングエリアに移動します。ステージングエリアでは、公式履歴にコミットする前に変更一式のスナップショットを準備します。 -
このファイルのステータスを確認します。
$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached
..." to unstage) new file: locations.txt これで、新しいファイルが追加され (ステージング)、準備が整ったらコミットできます。
git status
コマンドには、ディレクトリとステージングされたスナップショットの状態が表示されます。 -
次の行のように、コミットメッセージ付きで
git commit
コマンドを発行します。-m は、コミットメッセージが続くことを示します。$ git commit -m 'Initial commit' [master (root-commit) fedc3d3] Initial commit 1 file changed, 1 insertion(+) create mode 100644 locations.txt
git commit
はステージされたスナップショットを取得し、プロジェクト履歴にコミットします。git add
と組み合わせ、このプロセスはすべての Git ユーザーの基本的なワークフローを定義します。ここまでで作成したものはローカルシステムにあり、変更をプッシュするまで、Bitbucket リポジトリには反映されません。
-
Git とリモートリポジトリについて、もう少し詳しく学習しましょう。
-
リモートリポジトリと通信する Git の機能 (この場合、Bitbucket がリモートリポジトリです) は、あらゆる Git ベースのコラボレーションワークフローの基盤です。
-
Git のコラボレーションモデルでは、各開発者にリポジトリのコピーがあり、ローカルの履歴やブランチ構造を完全な形で保有しています。開発者は、他の開発者と個々の変更を共有する必要はなく、通常は一連のコミットをまとめて共有します。Git では作業コピー内の個々の変更項目を中央リポジトリにコミットするのではなく、ブランチ全体をリポジトリ間で共有します。
-
他のリポジトリとの接続を管理し、他のリポジトリにブランチを「プッシュ」することによってローカルの履歴を公開します。ブランチをローカルリポジトリに「プル」することによって他の開発者の進捗状況を確認することができます。
-
-
-
ローカルターミナルウィンドウに戻り、
git push origin master
を使用してコミットした変更を Bitbucket に送信します。このコマンドは、原点 (Bitbucket サーバー) で master ブランチ (Bitbucket のブランチ) へのプッシュを指定します。次のような応答が表示されます。
$ 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.
コミットは今、リモートリポジトリ (原点) にあります。
-
Bitbucket の BitbucketStationLocations リポジトリに移動します。
-
サイドバーの [コミット] をクリックすると、リポジトリに 1 つのコミットが表示されます。Bitbucket では、そのコミットに対して行ったすべての操作が組み合わされて表示されます。作成者列には、Git グローバルファイル
( ~/.gitconfig)
の構成時に使用した値が表示されます。
サイドバーの [ソース] をクリックすると、先程追加した 1 つのソースファイルlocations.txt
がリポジトリにあるのがわかります。
最初に作成した際、リポジトリはどのように見えていたかを覚えていますか。おそらく今とは少し異なっていたでしょう。
Bitbucket クラウドで Git リポジトリから変更をプルする
次に、宇宙ステーション管理者アクティビティのリストでは、場所に関する詳細情報を含むファイルが必要です。今は場所が少ないため、Bitbucket から直接追加します。
ステップ 1. Bitbucket でのファイルの作成
新しい場所のファイルを追加するには、次の手順を実行します。
-
ご利用の BitbucketStationLocations リポジトリから、ソースをクリックしてソースディレクトリを開きます。ディレクトリには、
locations.txt
という 1 つのファイルしかありません。A. ソースページ: リンクをクリックして、このページを開きます。
B. ブランチ選択: 表示するブランチを選択します。
C. その他のオプションボタン: クリックすると [ファイルを追加] など、その他のオプションメニューが開きます。
D. ソースファイルエリア: Bitbucket でファイルのディレクトリを表示します。 -
[ソース] ページで、右上隅にある [その他のオプション] ボタンをクリックしてメニューから [ファイルを追加] を選択します。[その他のオプション] ボタンは 1 つ以上のファイルをリポジトリに追加した後にのみ表示されます。
次の画像のように、新しいファイルを作成するページが開きます。
A. 新規ファイルを追加するブランチ: ファイルを別のブランチに追加する場合は変更します。
B. 新規ファイル用のエリア: 新しいファイルのコンテンツをここに追加します。 -
stationlocations
を [ファイル名] フィールドに入力します。 -
[構文モード] リストから [HTML] を選択します。
-
次の HTML コードをテキストボックスに追加します。
Bitbucket has the following space stations:
Earth's Moon
Headquarters -
[コミット] をクリックします。次のメッセージとともに [コミットメッセージ] フィールドが表示されます:
stationlocations created online with Bitbucket.
-
メッセージフィールドの下にある [コミット] をクリックします。
これで、Bitbucket に新しいファイルができました。コミットの詳細ページへ移動し、そこで行った変更を確認できます。
これまでに行ったコミットのリストを表示する場合は、サイドバーで [コミット] をクリックします。
ステップ 2. リモートリポジトリから変更をプル
次に、その新しいファイルをローカルリポジトリに取り込む必要があります。プロセスは非常に単純です。基本的には、Bitbucket に locations.txt
ファイルを取り込んだ際に使用したプッシュを逆に実行するだけです。
ファイルをローカルのリポジトリにプルするには、次の手順を実行します。
ターミナルウィンドウを開き、ローカルリポジトリのトップレベルに移動します。
$ cd ~/repos/bitbucketstationlocations/
git pull --all
コマンドを入力し、Bitbucket からのすべての変更をプルします (より複雑なブランチングワークフローでは、すべての変更のプルやパージが適さない場合があります)。要求されたら Bitbucket パスワードを入力します。ターミナルは次のようになります。$ 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
git pull
コマンドは、1 つのコマンドで、リモートリポジトリ (Bitbucket) のファイルをローカルリポジトリにマージします。ローカルシステムのリポジトリフォルダーに移動すると、追加したファイルが表示されます。
よくできました! 宇宙ステーションの位置に関する 2 つのファイルを追加することで、Bitbucket とローカルシステムの間で基本的な Git のワークフロー (クローン、追加、コミット、プッシュ、プル) を実行しました。
Git ブランチを使用してファイルをマージする
宇宙ステーション管理者の責任として、場合によっては情報をロックダウンしておく必要があります。特に、太陽系に新しい場所をマッピングするときは注意が必要です。ブランチについて学習することで、ファイルを更新し、準備が完了したときにのみ情報を共有できるようになります。
ブランチは、チームで作業しているときに最も力を発揮します。自分自身のブランチからプロジェクトの担当箇所に取り組み、Bitbucket から更新をプルし、その後、準備が整ったらメインブランチに自分の作業すべてをマージすることができます。ドキュメントには、ブランチを使用する理由に関するより詳細な説明が含まれています。
ブランチとは、ご使用のリポジトリの独立した開発ラインを意味します。ブランチをまったく新しい作業ディレクトリやステージングエリア、プロジェクト履歴としてとらえることもできます。新しいブランチを作成する際は、自動的にメインブランチ (マスターと呼びます) で作業がスタートします。次の図は、master ブランチとその他のバグ修正更新のブランチを視覚的にわかるように示したものです。
ステップ 1: ブランチの作成と変更
ブランチを作成して、まだコミットする準備が完了していない宇宙ステーションの今後の計画を追加しましょう。これらの計画を公開する準備ができたら、Bitbucket リポジトリに変更をマージし、その後で不要になったブランチを削除することができます。
ブランチが単なるコミットへのポインターであることを理解する必要があります。ブランチを作成したとしても、Git が行うのは新しいポインターの生成であり、ファイルやフォルダーの新しいセットを作成するのではありません。したがって、開始する前のリポジトリは次のようになります。
ブランチを作成するには、次の手順を実行します。
-
ターミナルウィンドウで、次のコマンドを使用してローカルリポジトリのトップレベルに移動します。
$ cd ~/repos/bitbucketstationlocations/
-
ターミナルウィンドウでブランチを作成します。
$ git branch future-plans
このコマンドはブランチを作成しますが、そのブランチに移動はしません。したがって、リポジトリは次のようになります。
ここではリポジトリの履歴には何の変更も加えられません。新たに作られるのは現在のブランチに対する新しいポインターのみです。新しいブランチで作業を開始するには、使用するブランチをチェックアウトする必要があります。
-
作成したばかりの新しいブランチをチェックアウトして使用を開始します。
$ git checkout future-plans Switched to branch 'future-plans'
git checkout
コマンドは、git
ブランチと連携して機能します。何か新しい作業で機能するブランチを作成するため、新しいブランチを作成するたびに (git branch
を使用) 、チェックアウト (git checkout
を使用) するようにしてください。これで新しいブランチをチェックアウトしました。Git ワークフローは次のようになります。 -
ローカルシステムで
bitbucketstationlocations
フォルダーを検索し、開きます。新しいブランチを作成した結果、ディレクトリ内に追加のファイルやフォルダーがないことに注目してください。 -
テキストエディターを使用して
stationlocations
ファイルを開きます。 -
他のステーションの位置を追加して、ファイルに変更を加えます。
Bitbucket has the following space stations:
Earth's Moon
HeadquartersMars
Recreation Department -
ファイルを保存して閉じます。
-
ターミナルウィンドウに
git status
と入力します。表示は次のようになります。$ git status On branch future-plans Changes not staged for commit: (use "git add
..." to update what will be committed) (use "git checkout -- ..." 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 つしかなかったためです。変更をステージングまたはコミットする前に、この行を見て、変更を追加するブランチがチェックアウトされていることを確認してください。 -
ファイルを準備します。
$ git add stationlocations
-
次の図のように、ターミナルウィンドウで
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(+)
このコミットにより、リポジトリは次のようになります。
次に、行った変更を
master
ブランチにマージします。
ステップ 2. ブランチのマージ: 早送りマージ
宇宙ステーションは大きくなっており、火星の拠点の開所式の時間です。将来の計画が現実となりつつあるため、future-plans
ブランチを、ローカルシステムのメインブランチにマージできます。
1 つのブランチのみ作成し、1 つの変更を行ったので、ブランチを早送りする方法を使用してマージします。早送りマージは現在のブランチの先端からターゲットブランチに向かって 1 本の直線的なパスのみが通っている場合に適用されます。この場合は、「実際に」ブランチがマージされるわけではなく、単に現在のブランチの先端をターゲットブランチの先端に移動させることによって (すなわち「早送り」によって) 履歴の統合が行われます。これによって実質的に履歴の結合が行われ、ターゲットブランチからアクセス可能であったコミットがすべて現在のブランチからアクセスで きるようになります。
このブランチワークフローは、一時的なトピックブランチで変更も小規模な場合に一般的ですが、長期的なフィーチャーでは一般的とはいえません。
早送りマージを完了するには、次の手順を実行します。
ターミナルウィンドウで、ローカルリポジトリのトップレベルに移動します。
$ cd ~/repos/bitbucketstationlocations/
すべての変更をコミットし、どのブランチをチェックアウトしたかを確認するため、
git status
コマンドを入力します。$ git status On branch future-plans nothing to commit, working directory clean
master
ブランチに切り替えます。$ git checkout master Switched to branch 'master' Your branch is up-to-date with 'origin/master'.
future-plans
ブランチの変更をmaster
ブランチにマージします。次のようになります。$ git merge future-plans Updating fcbeeb0..e3b7732 Fast-forward stationlocations | 4 ++++ 1 file changed, 4 insertions(+)
基本的に、
master
ブランチのポインターを現在のヘッドへ動かし、リポジトリは上記の早送りマージのようになります。future-plans
は今後使用する予定はないため、ブランチを削除できます。$ git branch -d future-plans Deleted branch future-plans (was e3b7732).
future-plans
を削除すると、引き続きコミット ID を使用してmaster
からブランチにアクセスできます。たとえば、future-plans
から追加した変更を元に戻したい場合、受け取ったコミット ID を使用してブランチに戻ります。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 にプッシュするときに何が起こるかを示しています。
変更をリモートリポジトリへプッシュする方法は次のとおりです。
-
ターミナルウィンドウのリポジトリディレクトリから、
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
-
Bitbucket リポジトリの [概要] ページをクリックすると、[最近のアクティビティ] ストリームにプッシュが表示されているのがわかります。
-
[コミット] をクリックすると、ローカルシステムで行ったコミットが表示されます。変更は、ローカルシステム上にあるため、同じコミット ID を保持します。
また、コミットリストの左の行には、直接のパスがあり、ブランチは表示されません。これは、
future-plans
ブランチがリモートリポジトリで操作されたことがなく、私たちが作成し、コミットした変更のみがあるためです。 -
[ブランチ] をクリックして、ページにもブランチのレコードがないことを確認します。
-
[ソース] をクリックし、
stationlocations
ファイルをクリックします。ファイルへの最後の変更は、プッシュしたばかりのコミット ID が付いています。 -
ファイル履歴リストをクリックして、このファイルにコミットされた変更を表示します。次の図のような内容が表示されます。
完了しました!
学習したすべての Git コマンドを記憶できるか自信がない場合も、問題ありません。必要なときに参照できるよう、[基本的な Git コマンド] ページをブックマークしてください。