EGit -> ブランチ

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-08 (火) 19:04:16 | 最終更新:2015-12-12 (土) 11:05:29


Eclipse:EGit/User Guide Branching

【環境】
Eclipse:Mars.1 (4.5.1) PHP
EGit:4.1.1.201511131810-r
OS:Windows7 SP1 64bit
切り替え(checkout)

Eclipse:EGit/User Guide Checking out an existing Branch
→スタート地点が3通り載っている。

プロジェクトコンテキストメニュー

  1. [チーム]-[切り替え]-[(当該ブランチ)]
新規作成

Eclipse:EGit/User Guide Creating a New Local Branch
→スタート地点が3通り載っている。

プロジェクトコンテキストメニュー

  1. [チーム]-[切り替え]-[新規ブランチ]
  2. 新規ブランチの作成(Branch Creation Dialog
    1. ソース:変更したいときは [選択] *1
    2. ブランチ名:任意
    3. プッシュおよびプルのアップストリームを構成する
      1. プルを行う場合
        1. 現在、詳細不明。大体の意味を理解した上で、ひとまず下記の通り
        2. ◎アップストリームのコミットをローカル・ブランチにマージする
        3. ◯アップストリームにローカル・ブランチのコミットをリベースする
    4. 完了

*1:ソースの選択
ローカル、リモートから任意に選択できる

プッシュ

プロジェクトコンテキストメニュー

  1. [チーム]-[リモート]-[プッシュ]
  2. 宛先 Git リポジトリー
    1. ◎構成済みリモート・リポジトリー
      1. 当該リモート先を選択
    2. ◯カスタム URI
      1. 一時的なリポジトリを利用する際に用いる(Pushing to other Repositories
    3. [次へ] ※1
  3. プッシュ仕様指定
    1. 作成/更新仕様の追加
      1. ソース参照:選択(ソースを選択すると、宛先に同名ブランチが自動選択される)
      2. 宛先参照:選択
      3. [仕様の追加] これで、プッシュの仕様という欄に追加される
    2. 事前定義仕様の追加
      1. ここの欄は、プッシュ仕様をまとめて追加したいときに利用するみたい
      2. [構成済みプッシュ仕様の追加]
      3. [すべてのブランチ仕様を追加]
        1. 読んだまんま。全てのブランチをプッシュするプッシュ構成となる
      4. [すべてのタグ仕様の追加]
    3. [‘origin 構成に仕様を保管] にチェックをすると、次回以降、プッシュ仕様の設定をスキップできる?/li>
    4. [次へ] or [完了]
  4. プッシュ確認
    1. プッシュ内容を表示してくれる
    2. 完了
  5. プッシュ結果
    1. プッシュ結果を表示してくれる
    2. [OK]

※1:次のダイアログのプッシュ仕様を設定しない状態で、ここで [完了] とすると
Can’t connect to any repository:
というエラーになる。

マージ&リベース
マージ リベース
概略 各ブランチの履歴がそのまま残る 履歴が統合される
メリット コミットの改変が起こらない
操作が容易
履歴が一本化される
デメリット 履歴が複雑化する コミットの改変が起こる
操作が多少煩雑
適性 リモートをローカルへ統合するとき ローカルをリモートへ統合するとき
参考サイト

The Powerful Code:使い分けできていますか?マージ(merge)&リベース(rebase)再入門
→メリット&デメリットおよび適性が記述されており、大変わかりやすい説明でした。感謝!

マージ

branchA で開発していた新機能を master へマージするという前提。
マージ元:branchA
マージ先:master
とする。

  1. ブランチを master へ切り替える
  2. [チーム]-[マージ](プロジェクトコンテキストメニュー)
  3. Merge ‘master’
    1. ツリーからマージ元ブランチを選択(今回は [ローカル]-[branchA])
    2. マージ・オプション
      1. 現状意味不明なので、デフォルトのまま
      2. ◎コミット
      3. ◯コミットなし
      4. ◯スカッシュ
    3. 高速フォワード・オプション
      1. 現状意味不明なので、デフォルトのまま
      2. ◎高速フォワードの場合はブランチ位置のみ更新する
      3. ◯高速フォワードの場合はマージ・コミットを作成する
      4. ◯高速フォワードでない場合は失敗
    4. [マージ]
  4. マージ結果
    1. マージ結果を表示してくれる
    2. [OK]
コンフリクト解消

マージした結果、コンフリクト(競合)を起こすことがある。

コンフリクトを起こしているファイルを開く
コンフリクト内容を、両方残すなり、片方を残すなり、対処
ファイルを保存
[チーム]-[索引に追加(Add to index)] とすることで、コンフリクトマークが消える
コンフリクトを全て解消したらコミット
プッシュ

コンフリクト箇所

プロジェクトエクスプローラ
コンフリクトを起こしているファイルにマーク(赤い左右矢印?)が付く
当該ファイル

  1. <<<<<<< HEAD
  2.     // 元々あったコード
  3.     $hoge = 0;
  4. =======
  5.     // マージしたコード
  6.     $hoge = 1;
  7. >>>>>>> refs/heads/3.8.17.1
リセット

プロジェクトコンテキストメニュー

  1. プロジェクトコンテキストメニューから [チーム]-[切り替え] で、リセットしたいブランチをアクティブにする
  2. プロジェクトコンテキストメニューから [チーム]-[リセット]
  3. リセット: project_name
    1. ツリーから、上書きしたいブランチを選択
    2. リセット先:ツリーでブランチを選択することで自動入力
      1. 「リセット先」と書かれると、「リセットしたいブランチ」のように受け取れるけど、
        実際は「当該ブランチをリセットするために元とするブランチ」をセットする
    3. リセット・タイプ
      1. ◯ソフト(HEAD 更新)
      2. ◯混合(HEAD およびインデックス更新)
      3. ◎ハード(HEAD, index, and working tree updated)
        1. 何かも全て更地にしてコピー
    4. リセット
  4. 確認ダイアログ [はい]
直前のコミット状態まで戻す

ファイルのコンテキストメニュー
[置換]-[HEAD 改訂]

参考サイト
河西 高明 BLOG:Eclipse EGit で作業ファイルの変更を個別に元に戻す方法

Posted by muchag | Eclipse,Library & PlugIn & AddIn |
初回投稿:2015-12-08 (火) 19:04:16 | 最終更新:2015-12-12 (土) 11:05:29

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment