EGit -> ブランチ
Eclipse:EGit/User Guide Branching
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
Eclipse:EGit/User Guide Checking out an existing Branch
→スタート地点が3通り載っている。
プロジェクトコンテキストメニュー
- [チーム]-[切り替え]-[(当該ブランチ)]
Eclipse:EGit/User Guide Creating a New Local Branch
→スタート地点が3通り載っている。
プロジェクトコンテキストメニュー
- [チーム]-[切り替え]-[新規ブランチ]
- 新規ブランチの作成(Branch Creation Dialog)
- ソース:変更したいときは [選択] *1
- ブランチ名:任意
- プッシュおよびプルのアップストリームを構成する
- プルを行う場合
- 現在、詳細不明。大体の意味を理解した上で、ひとまず下記の通り
- ◎アップストリームのコミットをローカル・ブランチにマージする
- ◯アップストリームにローカル・ブランチのコミットをリベースする
- 完了
*1:ソースの選択
ローカル、リモートから任意に選択できる
プロジェクトコンテキストメニュー
- [チーム]-[リモート]-[プッシュ]
- 宛先 Git リポジトリー
- ◎構成済みリモート・リポジトリー
- 当該リモート先を選択
- ◯カスタム URI
- 一時的なリポジトリを利用する際に用いる(Pushing to other Repositories)
- [次へ] ※1
- プッシュ仕様指定
- 作成/更新仕様の追加
- ソース参照:選択(ソースを選択すると、宛先に同名ブランチが自動選択される)
- 宛先参照:選択
- [仕様の追加] これで、プッシュの仕様という欄に追加される
- 事前定義仕様の追加
- ここの欄は、プッシュ仕様をまとめて追加したいときに利用するみたい
- [構成済みプッシュ仕様の追加]
- [すべてのブランチ仕様を追加]
- 読んだまんま。全てのブランチをプッシュするプッシュ構成となる
- [すべてのタグ仕様の追加]
- [‘origin 構成に仕様を保管] にチェックをすると、次回以降、プッシュ仕様の設定をスキップできる?/li>
- [次へ] or [完了]
- プッシュ確認
- プッシュ内容を表示してくれる
- 完了
- プッシュ結果
- プッシュ結果を表示してくれる
- [OK]
※1:次のダイアログのプッシュ仕様を設定しない状態で、ここで [完了] とすると
Can’t connect to any repository:
というエラーになる。
マージ | リベース | |
---|---|---|
概略 | 各ブランチの履歴がそのまま残る | 履歴が統合される |
メリット | コミットの改変が起こらない 操作が容易 |
履歴が一本化される |
デメリット | 履歴が複雑化する | コミットの改変が起こる 操作が多少煩雑 |
適性 | リモートをローカルへ統合するとき | ローカルをリモートへ統合するとき |
The Powerful Code:使い分けできていますか?マージ(merge)&リベース(rebase)再入門
→メリット&デメリットおよび適性が記述されており、大変わかりやすい説明でした。感謝!
branchA で開発していた新機能を master へマージするという前提。
マージ元:branchA
マージ先:master
とする。
- ブランチを master へ切り替える
- [チーム]-[マージ](プロジェクトコンテキストメニュー)
- Merge ‘master’
- ツリーからマージ元ブランチを選択(今回は [ローカル]-[branchA])
- マージ・オプション
- 現状意味不明なので、デフォルトのまま
- ◎コミット
- ◯コミットなし
- ◯スカッシュ
- 高速フォワード・オプション
- 現状意味不明なので、デフォルトのまま
- ◎高速フォワードの場合はブランチ位置のみ更新する
- ◯高速フォワードの場合はマージ・コミットを作成する
- ◯高速フォワードでない場合は失敗
- [マージ]
- マージ結果
- マージ結果を表示してくれる
- [OK]
マージした結果、コンフリクト(競合)を起こすことがある。
コンフリクトを起こしているファイルを開く
コンフリクト内容を、両方残すなり、片方を残すなり、対処
ファイルを保存
[チーム]-[索引に追加(Add to index)] とすることで、コンフリクトマークが消える
コンフリクトを全て解消したらコミット
プッシュ
プロジェクトエクスプローラ
コンフリクトを起こしているファイルにマーク(赤い左右矢印?)が付く
当該ファイル
- <<<<<<< HEAD
- // 元々あったコード
- $hoge = 0;
- =======
- // マージしたコード
- $hoge = 1;
- >>>>>>> refs/heads/3.8.17.1
プロジェクトコンテキストメニュー
- プロジェクトコンテキストメニューから [チーム]-[切り替え] で、リセットしたいブランチをアクティブにする
- プロジェクトコンテキストメニューから [チーム]-[リセット]
- リセット: project_name
- ツリーから、上書きしたいブランチを選択
- リセット先:ツリーでブランチを選択することで自動入力
- 「リセット先」と書かれると、「リセットしたいブランチ」のように受け取れるけど、
実際は「当該ブランチをリセットするために元とするブランチ」をセットする - リセット・タイプ
- ◯ソフト(HEAD 更新)
- ◯混合(HEAD およびインデックス更新)
- ◎ハード(HEAD, index, and working tree updated)
- 何かも全て更地にしてコピー
- リセット
- 確認ダイアログ [はい]
ファイルのコンテキストメニュー
[置換]-[HEAD 改訂]
参考サイト
河西 高明 BLOG:Eclipse EGit で作業ファイルの変更を個別に元に戻す方法