====== GitHub Eclipseによるブランチの操作 ====== --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-06-26 // [[github:top|GitHub に戻る]] 本章は、「[[github:basic|GitHub Eclipseによるリポジトリの基本操作]]」の続編です。今回はEclipseによるGitブランチの操作について説明します。Gitサーバーには GitHub を使用していますが、社内サーバーや他のGitサーバーについてもEclipse側の操作は同じだと思います。 本章の前提は、[[github:basic|前章]]と同じで、[[github:config|GitHubのアカウント]]と以下のクライアント環境が必要です。Gitクライアントには[[git2:client:windows:eclipse|Eclipse]]を使用します。 クライアント環境 * Windows10 Pro * Eclipse 2019-12 Version 4.14 関連記事 * [[github:config|GitHub 環境構築]] * [[github:email|GitHub メールの設定]] * [[github:profile|GitHub プロフィールの設定]] * [[github:basic|GitHub Eclipseによるリポジトリの基本操作]] * GitHub Eclipseによるブランチの操作 * [[github:release|GitHub タグとリリースの作成]] * [[github:collaborator|GitHub コラボレータの招待]] * [[github:publish|GitHub ソースコードの公開]] リンク * https://github.com/ --- GitHubの本家 * [[https://help.github.com/ja/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository|リポジトリ内でブランチを作成および削除する]] --- GitHubヘルプより * [[https://help.github.com/ja/github/administering-a-repository/managing-branches-in-your-repository|リポジトリ内のブランチを管理する]] --- GitHubヘルプより * [[https://qiita.com/shinya_nakashima/items/fab635a3c04858d65c47|Gitのリモート追跡ブランチ・追跡ブランチ・上流ブランチ]] --- ブランチの基礎用語が丁寧に解説してあります(感謝!!) ---- ===== 前提条件 ===== ここでの説明は[[github:basic|前章]]から続いており、EclipseによるGitブランチの操作方法を述べる前に、前提となるリポジトリとブランチの条件を記載しておきます。 Gitサーバ( GitHub )に作成済のリポジトリとブランチは以下の通りです: [{{:github:branch:github-branch01.png?nolink|}}] * リポジトリ:''hello-world'' * ブランチ: * ''master'' --- マスターブランチ * ''readme-edits'' --- README.md編集用のブランチ Gitクライアントは、Eclipseで、プロジェクト名は ''hello-world'' です。Eclipse側のブランチの状態を[Gitリポジトリー]タブで表示すると以下の通りです。[Gitリポジトリ]を表示するには、Eclipse メニューの[ウインドウ][ビューの表示][その他]から[Git][Gitリポジトリー]を選択して下さい。 [{{:github:branch:github-branch02.png?nolink|}}] * リポジトリ:''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'']を右クリックして、[ブランチの構成...]を選択して下さい。 [{{:github:branch:github-branch03.png?nolink|}}] アップストリームがリモートリポジトリのブランチ ''readme-edits'' であることが確認できます。これは、Eclipseの[[github:basic#プロジェクトのインポート|プロジェクトをインポート]]する時に、''readme-edits'' を ''origin/readme-edits'' からチェックアウトしているからです。
> 「アップストリーム」とは、正確には、upstream branch の事で「上流ブランチ」とも呼ばれています。上流ブランチ(upstream branch)とは、ローカルブランチから、履歴を追跡(トラッキング)するように設定したブランチの事です。従って、ローカルブランチの追跡先が上流ブランチと考えられます。パラメータの無い push, fetch, pullは、上流ブランチが対象になります。 > 上流ブランチは通常はリモートにあってリモート追跡ブランチにより指定されますが、ローカルブランチの場合もあります。尚、上流ブランチをもつローカルブランチは「追跡ブランチ」とも呼ばれています。
\\ ===== 新しいリモートブランチをEclipseでチェックアウトする ===== ==== サーバ側で新しいブランチを作成する ==== まず、準備として、''master''ブランチ から新しいブランチ ''license-edits'' をGitHubで作ります。 リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。 [{{:github:branch:github-branch10.png?nolink|}}] ■ ファイルリスト上部のドロップダウン[branch:master] をクリックします。\\ ■ テキストボックスに 新しいブランチのブランチ名 ''license-edits'' を入力します。\\ ■ [Branches]内の[**Create branch: license-edits** from 'master']を選択して下さい。 \\ ==== フェッチ構成の変更 ==== 新しいブランチをチェックアウトする前に、そのブランチをフェッチできるようの'origin'の構成を変更します。Eclipseの[プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。 [{{:github:branch:github-branch11.png?nolink|}}] ■ [チーム][リモート][アップストリームからフェッチ構成...]を選択して下さい。 [{{:github:branch:github-branch12.png?nolink|}}] ■ [拡張...]ボタンを押します。 [{{:github:branch:github-branch13.png?nolink|}}] ■ [ソース参照]から ''license-edits[ブランチ]'' を選択します。このとき [宛先参照]は自動で入力されます。\\ ■ 右上の[+仕様の追加]ボタンを押して下さい。 [{{:github:branch:github-branch14.png?nolink|}}] ■ [フェッチの仕様]中の ''refs/heads/license-edits'' の[更新の強制]にチェックを付けます。\\ ■ 画面下の['origin'構成に仕様を保存]にチェックを付けます。\\ ■ [完了]ボタンを押して下さい。 [{{:github:branch:github-branch15.png?nolink|}}] ■ [保存とフェッチ]ボタンを押して下さい。 [{{:github:branch:github-branch16.png?nolink|}}] ■ ''license-edits'' が新しくフェッチされました。\\ ■ [閉じる]ボタンを押して下さい。 \\ ==== 新しいブランチのチェックアウト ==== [プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。 [{{:github:branch:github-branch17.png?nolink|}}] ■ [チーム][切り替え][新規ブランチ]を選択して下さい。 [{{:github:branch:github-branch18.png?nolink|}}] ■ [選択...]ボタンを押します。\\ [{{:github:branch:github-branch19.png?nolink|}}] ■ [リモートト・ラッキング]の中から ''origin/license-edits'' を選択します。\\ ■ [OK]ボタンを押して下さい。 [{{:github:branch:github-branch20.png?nolink|}}] ■ [ブランチ名]と他の設定項目が自動でセットされます。\\ ■ [完了]ボタンを押して下さい。 チェックアウト後、[プロジェクト・エクスプローラー]のプロジェクト名が''[hello-world license-edits]''になり新しいブランチに自動的に変更されます。 === チェックアウト後のブランチの状態 === チェックアウト後のEclipseのブランチの状態を再び[Gitリポジトリー]タブで表示して見ましょう。 [{{:github:branch:github-branch21.png?nolink|}}] * ローカル・ブランチ * ''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ファイルを編集してコミットし、基本の流れに従い[[github:basic#プルリクエスト|プルリクエスト]]を行って[[github:basic#マージ|マージ]]します。 \\ ===== Eclipseで既存のブランチに切り替える ===== 例えば、ブランチを ''license-edits'' から ''readme-edits'' に切り替えるには、以下のようにします。 [プロジェクト・エクスプローラー]でプロジェクト(hello-world)を右クリックして下さい。 [{{:github:repo:github-repo73.png?nolink|}}] ■ [チーム][切り替え]から''readme-edits'' を選択して下さい。 切り替え後、[プロジェクト・エクスプローラー]のプロジェクト名が''[hello-world readme-edits]'' に変わります。 \\ ===== Eclipseで新しいブランチ作り、プッシュする ===== 今度は、Eclipseで新しいブランチを作り、そのブランチをプッシュします。
ブランチ名: ''hello-edits''
手順としては - ''master''ブランチを取得する - ''master''がローカルに無ければチェックアウトする - ''master''がローカルに有れば最新をプルする - ''master''ブランチから''hello-edits''ブランチを作る - ''hello-edits'' で編集する(コミット) - ''hello-edits'' を同名の上流ブランチにプッシュする \\ === 1.最新のmasterブランチの取得 === ここでは、masterブランチをGitHubからチェックアウトする所から始めます。詳細は、上述の「[[#新しいブランチのチェックアウト]]」を参考にして下さい。以下はその抜粋です。 プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ...]を選択して下さい。 [{{:github:branch:github-branch30.png?nolink|}}] ■ masterブランチを選択して [完了]ボタンを押して下さい。\\ ■ masterブランチがチェックアウトされ、プロジェクトがmasterブランチに切り替わります。
既に、masterブランチをチェックアウトしている時は、プロジェクト( hello-world )を右クリックして [チーム][プル]を選択して、masterを最新の状態にします。プルが終了すると以下のダイアログが表示されます。 [{{:github:branch:github-branch31.png?nolink|}}] ■ [閉じる]ボタンを押して下さい。
=== 2.新しいブランチの作成 === 再び、プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ...]を選択して下さい。 [{{:github:branch:github-branch32.png?nolink|}}] ■ [ブランチ名]に ''hello-edits'' を入力します。\\ ■ [プッシュおよびプルのアップストリームを構成する]は **未チェック** にします。\\ ■ [完了]ボタンを押して下さい。\\ ■ プロジェクトが hello-edits ブランチに切り替わります。 === 3.新しいブランチでの編集(コミット) === 新しいファイル( ''hello.php'' )を作ります。 {{fa>folder-open-o}} ** /hello-world ** ファイルを編集し終えたらステージングします。 [{{:github:branch:github-branch33.png?nolink|}}] ■ [コメントメッセージ]を入力して[コミット]して下さい。 === 4.新しいブランチのプッシュ === プロジェクト( hello-world )を右クリックして[チーム][ブランチのプッシュ 'hello-edits'...]を選択して下さい。 [{{:github:branch:github-branch34.png?nolink|}}] ■ [宛先]のリモートとブランチはそのままで。\\ ■ [プッシュおよびプルのアップストリームを構成する]にチェックを入れます。\\ ■ [プレビュー]ボタンを押して下さい。 [{{:github:branch:github-branch35.png?nolink|}}] ■ [プッシュ]ボタンを押して下さい。 [{{:github:branch:github-branch36.png?nolink|}}] ■ [閉じる]ボタンを押して下さい。 === 5.GitHubでの確認 === 新しいブランチ( hello-edits )が作成されているか、GitHubで確認してみましょう。 リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。 [{{:github:branch:github-branch37.png?nolink|}}] ■ ファイルリストの右上に [4 branches]と表示されていて新しいブランチが増えていることが分かります。\\ ■ また、新しくプッシュしたので、上部にも [Compare & pull request]のボタンも表示されています。\\ ■ ブランチのプルダウン[Branch:master]をクリックして[hello-edits]を選択して下さい。 [{{:github:branch:github-branch38.png?nolink|}}] ■ Eclipseからプッシュした ''hello.php'' が追加されているのが確認できます。 ここから先は、基本の流れに従い[[github:basic#プルリクエスト|プルリクエスト]]を行って[[github:basic#マージ|マージ]]します。 === ネットワークグラフ === GitHubでは、ブランチの履歴をネットワークグラフで見ることができます。リポジトリ hello-world 画面の[Insights]タブを選択した後、左サイドバーで[Network]を選択します。 [{{:github:branch:github-branch39.png?nolink|}}] \\ ===== Eclipseでマージして、プッシュする ===== 前節「[[#Eclipseで新しいブランチ作り、プッシュする]]」とは異なり、本節では、Eclipseで新しいブランチを作り、それを masterブランチにマージしてからプッシュします。結果は前節と同じですが、レビューを経ずに master に直接プッシュします。
ブランチ名: ''hello-edits2''
手順としては - ''master''ブランチを取得する - ''master''がローカルに無ければチェックアウトする - ''master''がローカルに有れば最新をプルする - ''master''ブランチから''hello-edits2''ブランチを作る - ''hello-edits2'' で編集する(コミット) - ''hello-edits2'' を''master''にマージする - ''master''をプッシュする === 1.最新のmasterブランチの取得 === masterブランチに切り替えます。まだの時は、プロジェクト( hello-world )を右クリックして[チーム][切り替え][master]を選択して下さい。 > masterブランチをまだチェックアウトしていない場合は、上述の「[[#新しいブランチのチェックアウト]]」を参考にして下さい。 プロジェクト( hello-world )を右クリックして[チーム][プル]を選択します。 [{{:github:branch:github-branch40.png?nolink|}}] ■ [閉じる]ボタンを押して下さい。 === 2.新しいブランチの作成 === プロジェクト( hello-world )を右クリックして[チーム][切り替え][新規ブランチ...]を選択して下さい。 [{{:github:branch:github-branch41.png?nolink|}}] ■ [ブランチ名]に ''hello-edits2'' を入力します。\\ ■ [プッシュおよびプルのアップストリームを構成する]は **未チェック** にします。\\ ■ [完了]ボタンを押して下さい。\\ ■ プロジェクトが hello-edits2 ブランチに切り替わります。 === 3.新しいブランチでの編集(コミット) === ファイル( ''hello.php'' )を編集します。 {{fa>folder-open-o}} ** /hello-world ** ファイルを編集し終えたらステージングした後に、[コミット]します。 === 4.masterブランチへのマージ === マージでは、マージされる方のブランチを表示して作業します。 プロジェクト( hello-world )を右クリックして[チーム][切り替え][master]を選択し、''master'' ブランチへ切り替えます。 [チーム]で[マージ]を選択します。 [{{:github:branch:github-branch42.png?nolink|}}] ■ マージするブランチ ''hello-edits2'' を選択します。\\ ■ [マージ]ボタンを押して下さい。 [{{:github:branch:github-branch43.png?nolink|}}] ■ マージが終了しました。\\ ■ [閉じる]ボタンを押して下さい。 === 5.masterへのプッシュ === マージしたmasterブランチをアップストリームにプッシュします。 プロジェクト( hello-world )を右クリックして[チーム][アップストリームへブッシュ]を選択します。 [{{:github:branch:github-branch44.png?nolink|}}] ■ プッシュが終了しました。\\ ■ [閉じる]ボタンを押して下さい。 === 6.GitHubでの確認 === プッシュされているかGitHubで確認してみましょう。 リポジトリ hello-world に移動します。まだ表示していない場合は、ダッシュボードの左サイドバーから hello-world を選択して下さい。 [{{:github:branch:github-branch45.png?nolink|}}] ■ ファイルリストの右上に [10 commits]と表示されていて新しいコミットが増えているが分かります。\\ ■ [10 commits]をクリックして選択して下さい。(数字の10は例です。別の数字かもしれません) [{{:github:branch:github-branch46.png?nolink|}}] ■ コミット履歴の先頭( ''hello.phpの修正'' )が、前項でmasterに直接プッシュした履歴です。 また、ブランチのネットワークグラフは以下のようになっています: [{{:github:branch:github-branch47.png?nolink|}}] masterに直接プッシュしたので、作業用のブランチはなく、masterのブランチの上にコミットの履歴が乗っています。 \\