Ground Sunlight

Windowsで作る - Webプログラミングの開発環境(PHP)

ユーザ用ツール

サイト用ツール


サイドバー

メインメニュー

道具箱

リポジトリ編

フレームワーク編

公開ソフトウェア

メタ
リンク


このページへのアクセス
今日: 2 / 昨日: 9
総計: 233

github:branch

GitHub Eclipseによるブランチの操作

y2sunlight 2020-06-26

GitHub に戻る

本章は、「GitHub Eclipseによるリポジトリの基本操作」の続編です。今回はEclipseによるGitブランチの操作について説明します。Gitサーバーには GitHub を使用していますが、社内サーバーや他のGitサーバーについてもEclipse側の操作は同じだと思います。

本章の前提は、前章と同じで、GitHubのアカウントと以下のクライアント環境が必要です。GitクライアントにはEclipseを使用します。

クライアント環境

  • Windows10 Pro
  • Eclipse 2019-12 Version 4.14

関連記事

リンク


前提条件

ここでの説明は前章から続いており、EclipseによるGitブランチの操作方法を述べる前に、前提となるリポジトリとブランチの条件を記載しておきます。

Gitサーバ( GitHub )に作成済のリポジトリとブランチは以下の通りです:

  • リポジトリ:hello-world
  • ブランチ:
    • master — マスターブランチ
    • readme-edits — README.md編集用のブランチ

Gitクライアントは、Eclipseで、プロジェクト名は hello-world です。Eclipse側のブランチの状態を[Gitリポジトリー]タブで表示すると以下の通りです。[Gitリポジトリ]を表示するには、Eclipse メニューの[ウインドウ][ビューの表示][その他]から[Git][Gitリポジトリー]を選択して下さい。

  • リポジトリ:hello-world
  • ローカル・ブランチ
    • readme-edits — README.md編集用のブランチ
  • リモート・トラッキング
    • origin/master — マスターブランチ
    • origin/readme-edits — README.md編集用のブランチ

Eclipse のローカル・ブランチは readme-edits だけです。リモート・トラッキングには2つのリポジトリがあり、どちらのリモートリポジトリもフェッチされています(履歴を取得している状態)。

「リモート・トラッキング」とは、正確には、Remote-tracking branch の事で「リモート追跡ブランチ」とも呼ばれています。リモート追跡ブランチ(Remote-tracking branch)とは、ローカルリポジトリ内に存在して、通常は origin によって定義されたリモートにある同名のブランチと連結し、その状態を追跡しているブランチと考えることができます。リモート追跡ブランチはフェッチ(またはプル)することで自動的に更新されます。

ローカルリポジトリ readme-edits のアップストリーム構成を見るには、[Gitリポジトリー]タブ上で、[ブランチ][ローカル][readme-edits]を右クリックして、[ブランチの構成…]を選択して下さい。

アップストリームがリモートリポジトリのブランチ readme-edits であることが確認できます。これは、Eclipseのプロジェクトをインポートする時に、readme-editsorigin/readme-edits からチェックアウトしているからです。

「アップストリーム」とは、正確には、upstream branch の事で「上流ブランチ」とも呼ばれています。上流ブランチ(upstream branch)とは、ローカルブランチから、履歴を追跡(トラッキング)するように設定したブランチの事です。従って、ローカルブランチの追跡先が上流ブランチと考えられます。パラメータの無い push, fetch, pullは、上流ブランチが対象になります。
上流ブランチは通常はリモートにあってリモート追跡ブランチにより指定されますが、ローカルブランチの場合もあります。尚、上流ブランチをもつローカルブランチは「追跡ブランチ」とも呼ばれています。


新しいリモートブランチをEclipseでチェックアウトする

サーバ側で新しいブランチを作成する

まず、準備として、masterブランチ から新しいブランチ license-edits をGitHubで作ります。

リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。

■ ファイルリスト上部のドロップダウン[branch:master] をクリックします。
■ テキストボックスに 新しいブランチのブランチ名 license-edits を入力します。
■ [Branches]内の[Create branch: license-edits from 'master']を選択して下さい。


フェッチ構成の変更

新しいブランチをチェックアウトする前に、そのブランチをフェッチできるようの'origin'の構成を変更します。Eclipseの[プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。

■ [チーム][リモート][アップストリームからフェッチ構成…]を選択して下さい。

■ [拡張…]ボタンを押します。

■ [ソース参照]から license-edits[ブランチ] を選択します。このとき [宛先参照]は自動で入力されます。
■ 右上の[+仕様の追加]ボタンを押して下さい。

■ [フェッチの仕様]中の refs/heads/license-edits の[更新の強制]にチェックを付けます。
■ 画面下の['origin'構成に仕様を保存]にチェックを付けます。
■ [完了]ボタンを押して下さい。

■ [保存とフェッチ]ボタンを押して下さい。

license-edits が新しくフェッチされました。
■ [閉じる]ボタンを押して下さい。


新しいブランチのチェックアウト

[プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。

■ [チーム][切り替え][新規ブランチ]を選択して下さい。

■ [選択…]ボタンを押します。

■ [リモートト・ラッキング]の中から origin/license-edits を選択します。
■ [OK]ボタンを押して下さい。

■ [ブランチ名]と他の設定項目が自動でセットされます。
■ [完了]ボタンを押して下さい。

チェックアウト後、[プロジェクト・エクスプローラー]のプロジェクト名が[hello-world license-edits]になり新しいブランチに自動的に変更されます。

チェックアウト後のブランチの状態

チェックアウト後のEclipseのブランチの状態を再び[Gitリポジトリー]タブで表示して見ましょう。

  • ローカル・ブランチ
    • license-edits — LICENSE編集用のブランチ
    • readme-edits — README.md編集用のブランチ
  • リモート・トラッキング
    • origin/license-edits — LICENSE編集用のブランチ
    • origin/master — マスターブランチ
    • origin/readme-edits — README.md編集用のブランチ

Eclipse のローカル・ブランチに license-edits が、リモート・トラッキングにも origin/license-edits が増えています。

ここから先は、LICENSEファイルを編集してコミットし、基本の流れに従いプルリクエストを行ってマージします。


Eclipseで既存のブランチに切り替える

例えば、ブランチを license-edits から readme-edits に切り替えるには、以下のようにします。

[プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。

■ [チーム][切り替え]からreadme-edits を選択して下さい。

切り替え後、[プロジェクト・エクスプローラー]のプロジェクト名が[hello-world readme-edits] に変わります。


Eclipseで新しいブランチ作り、プッシュする

今度は、Eclipseで新しいブランチを作り、そのブランチをプッシュします。

ブランチ名: hello-edits

手順としては

  1. masterブランチを取得する
    1. masterがローカルに無ければチェックアウトする
    2. masterがローカルに有れば最新をプルする
  2. masterブランチからhello-editsブランチを作る
  3. hello-edits で編集する(コミット)
  4. hello-edits を同名の上流ブランチにプッシュする


1.最新のmasterブランチの取得

ここでは、masterブランチをGitHubからチェックアウトする所から始めます。詳細は、上述の「新しいブランチのチェックアウト」を参考にして下さい。以下はその抜粋です。

プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ…]を選択して下さい。

■ masterブランチを選択して [完了]ボタンを押して下さい。
■ masterブランチがチェックアウトされ、プロジェクトがmasterブランチに切り替わります。

既に、masterブランチをチェックアウトしている時は、プロジェクト( hello-world )を右クリックして [チーム][プル]を選択して、masterを最新の状態にします。プルが終了すると以下のダイアログが表示されます。

■ [閉じる]ボタンを押して下さい。

2.新しいブランチの作成

再び、プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ…]を選択して下さい。

■ [ブランチ名]に hello-edits を入力します。
■ [プッシュおよびプルのアップストリームを構成する]は 未チェック にします。
■ [完了]ボタンを押して下さい。
■ プロジェクトが hello-edits ブランチに切り替わります。

3.新しいブランチでの編集(コミット)

新しいファイル( hello.php )を作ります。

/hello-world

hello.php
<?php
echo 'Hello,World!';

ファイルを編集し終えたらステージングします。

■ [コメントメッセージ]を入力して[コミット]して下さい。

4.新しいブランチのプッシュ

プロジェクト( hello-world )を右クリックして[チーム][ブランチのプッシュ 'hello-edits'…]を選択して下さい。

■ [宛先]のリモートとブランチはそのままで。
■ [プッシュおよびプルのアップストリームを構成する]にチェックを入れます。
■ [プレビュー]ボタンを押して下さい。

■ [プッシュ]ボタンを押して下さい。

■ [閉じる]ボタンを押して下さい。

5.GitHubでの確認

新しいブランチ( hello-edits )が作成されているか、GitHubで確認してみましょう。

リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。

■ ファイルリストの右上に [4 branches]と表示されていて新しいブランチが増えていることが分かります。
■ また、新しくプッシュしたので、上部にも [Compare & pull request]のボタンも表示されています。
■ ブランチのプルダウン[Branch:master]をクリックして[hello-edits]を選択して下さい。

■ Eclipseからプッシュした hello.php が追加されているのが確認できます。

ここから先は、基本の流れに従いプルリクエストを行ってマージします。

ネットワークグラフ

GitHubでは、ブランチの履歴をネットワークグラフで見ることができます。リポジトリ hello-world 画面の[Insights]タブを選択した後、左サイドバーで[Network]を選択します。


Eclipseでマージして、プッシュする

前節「Eclipseで新しいブランチ作り、プッシュする」とは異なり、本節では、Eclipseで新しいブランチを作り、それを masterブランチにマージしてからプッシュします。結果は前節と同じですが、レビューを経ずに master に直接プッシュします。

ブランチ名: hello-edits2

手順としては

  1. masterブランチを取得する
    1. masterがローカルに無ければチェックアウトする
    2. masterがローカルに有れば最新をプルする
  2. masterブランチからhello-edits2ブランチを作る
  3. hello-edits2 で編集する(コミット)
  4. hello-edits2masterにマージする
  5. masterをプッシュする

1.最新のmasterブランチの取得

masterブランチに切り替えます。まだの時は、プロジェクト( hello-world )を右クリックして[チーム][切り替え][master]を選択して下さい。

masterブランチをまだチェックアウトしていない場合は、上述の「新しいブランチのチェックアウト」を参考にして下さい。

プロジェクト( hello-world )を右クリックして[チーム][プル]を選択します。

■ [閉じる]ボタンを押して下さい。

2.新しいブランチの作成

プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ…]を選択して下さい。

■ [ブランチ名]に hello-edits2 を入力します。
■ [プッシュおよびプルのアップストリームを構成する]は 未チェック にします。
■ [完了]ボタンを押して下さい。
■ プロジェクトが hello-edits2 ブランチに切り替わります。

3.新しいブランチでの編集(コミット)

ファイル( hello.php )を編集します。

/hello-world

hello.php
<?php
echo 'Hello,World!\n';
echo 'This is y2sunlight from Japan.';

ファイルを編集し終えたらステージングした後に、[コミット]します。

4.masterブランチへのマージ

マージでは、マージされる方のブランチを表示して作業します。

プロジェクト( hello-world )を右クリックして[チーム][切り替え][master]を選択し、master ブランチへ切り替えます。

[チーム]で[マージ]を選択します。

■ マージするブランチ hello-edits2 を選択します。
■ [マージ]ボタンを押して下さい。

■ マージが終了しました。
■ [閉じる]ボタンを押して下さい。

5.masterへのプッシュ

マージしたmasterブランチをアップストリームにプッシュします。

プロジェクト( hello-world )を右クリックして[チーム][アップストリームへブッシュ]を選択します。

■ プッシュが終了しました。
■ [閉じる]ボタンを押して下さい。

6.GitHubでの確認

プッシュされているかGitHubで確認してみましょう。

リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。

■ ファイルリストの右上に [10 commits]と表示されていて新しいコミットが増えているが分かります。
■ [10 commits]をクリックして選択して下さい。(数字の10は例です。別の数字かもしれません)

■ コミット履歴の先頭( hello.phpの修正 )が、前項でmasterに直接プッシュした履歴です。

また、ブランチのネットワークグラフは以下のようになっています:

masterに直接プッシュしたので、作業用のブランチはなく、masterのブランチの上にコミットの履歴が乗っています。


コメント

コメントを入力. Wiki文法が有効です:
 
github/branch.txt · 最終更新: 2020/07/06 12:11 by tanaka