EGit

逆引き EGit

More than 3 years have passed since last update.


はじめに

逆引き EGit へようこそ!

こちらは「git コマンド使ってもいいんだけど、Eclipse を常用してると git に移るのが面倒」という理由で EGit を使ってる筆者による逆引き形式のメモ書きです。


  • 現在 EGit の最新バージョンは 3.7 です

  • 次バージョン 4.0 のリリースは2015年6月予定です

なお、git でよく使う操作はだいたい EGit でできますが、git コマンドを使わないと出来ないことが、どーしても出てくるので、そこは諦めましょう。


英語でもいいから公式のドキュメントないの?

EGit/User Guide - Eclipsepedia


コミット前の変更点を捨てたい

Subversion でいう revert。

[Replace With] > [HEAD Revision] すると、ローカルでの変更点を捨てられる。捨てるときに確認ダイアログが出てこないので注意。

変更があったファイル一覧を出して、個別に捨てたい場合は、[Compare With] > [HEAD Revision] して Git Tree Compare を表示してから、個別に捨てるといい。


コミット済みのファイルをバージョン管理から外す (git rm , gitignore)

[Team] > [Untrack] して [Team] > [Ignore] する。

ファイルの場所によっては EGit では出来ないことがある。その場合はコマンドラインで git rm を使う。この時、手元のファイルも削除されてしまうことに注意。


Pull したらコンフリクトした

あとでかく


ブランチを切り替えたい (git checkout )

[Team] > [Switch To]


リモートブランチを削除したい (git push origin :)


  1. [Team] > [Remote] > [Push...] でダイアログを開く

  2. [Next]

  3. Add delete ref specification で Remote ref to delete を指定して、すぐ右にある [Add spec] を押し、[Next]

  4. プッシュ予定の内容が表示されるので、確認して Finish!


マージのコンフリクトを解消する


  1. コンフリクトしたファイルを確認する。両方向き矢印 ←→ が付いているファイルがコンフリクトしたファイル。スター * が付いているファイルはコンフリクトしていない。

  2. ファイルごとに解決。コンフリクトしたファイルを開いて >>>> やら ==== やらを手がかりに手直しした後、ファイルを右クリックして [Team] > [Add to Index] すれば、他のファイルと同じように * になる。もし元のファイルと同じ内容に戻った場合は * がつかない。いずれにせよ←→は消える。

  3. 仕上げ。全てのコンフリクトしたファイルから ←→ が消えたら完全解決まで後一歩。通常のコミット時と同じように [Team] > [Commit] でコミットすれば完了。


マージコミットを作る (git merge --no-ff)


  1. [Team] > [Merge...] でマージの設定を開く

  2. マージするブランチを選ぶ

  3. "Fast forward options" で "If a fast-forward, create a merge commit" を選んでマージ


  • EGit 2.3 以降

  • History ビューなどで操作するとできない


タグを作って共有する (git push --tags)

git では、タグを作って普通にプッシュしても反映されない。明示的にタグをプッシュしないといけない。


  1. ヒストリーで、タグを打ちたいコミットを右クリックして [Create Tag...]

  2. タグの名前と、タグの説明文を入力して [OK]

  3. プロジェクトを右クリックして [Team] > [Remote] > [Push...]

  4. リポジトリの URL が合っていることを確認して [Next]

  5. 真ん中右の方にある [Add All Tags Spec] をクリックして [Next]

  6. タグ追加の結果(予定)が表示されるので、確認して [Finish]


昔に帰りたい (git checkout か git reset など)

昔に帰りたいというのは、タイムマシンで昔の様子を見に行って、また現在に戻ってきたいのか、これまでに積み上げた数コミットを捨ててやり直したいのか、どっち?

前者

1. ヒストリーから、該当時点のコミットを選んで右クリックして [Checkout]

後者(捨てたコミットは保険として残るけど、基本的には捨てた扱い)

1. ヒストリーから、該当時点のコミットを選んで、右クリックして [Reset] > [Hard]


リベースしたい (git rebase master topic)

master ブランチの上に topic ブランチをリベースする場合。

topic ブランチを書いている間に master ブランチが進んでしまったときとかに使う。

topic ブランチに切り替えた状態で、次のどちらかの操作を行う。

1. パッケージエクスプローラから

a. [Team] > [Rebase...] で Local の master を選んでリベース

1. ヒストリーから

a. master ブランチを右クリックして [Rebase on Top of]


コミットをまとめたい (git rebase -i) since 3.2

ヒストリーから対象のコミットを右クリックして [Rebase Interactive]


プッシュ前のまずいコミットを歴史から消し去りたい (git rebase -i)

直前のコミットであれば EGit でも何とかなるが、そうじゃないと EGit では難しい。おとなしくコンソールで git rebase -i を打ったほうがいい。

直前のコミットの場合…


  1. 消し去りたい情報を削除する

  2. パッケージエクスプローラから [Team] > [Commit]

  3. ダイアログ右上の、三角に矢印がついたボタン (Amend Previous Commit) を押す

  4. コミットする


改行文字を強制したい (.gitattributes)

対応してない!!!こんなバグレポートが上がっている。


非対応


考え中

特になし


番外編


EGit をバージョンアップする


  1. メニューの [Help] > [Install new Software...]

  2. 右上の Add ボタンから EGit の更新サイトを登録する



  3. 適当に選んで選んでアップデートする。以下のあたりを選べば大丈夫かも。


    • Eclipse Git Team Provider

    • Eclipse Git Team Provider

    • JGit

    • Java implementation of Git



参考:


更新情報を得る

ここからどうぞ>http://wiki.eclipse.org/EGit/New_and_Noteworthy