はじめに
逆引き 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 :)
- [Team] > [Remote] > [Push...] でダイアログを開く
- [Next]
- Add delete ref specification で Remote ref to delete を指定して、すぐ右にある [Add spec] を押し、[Next]
- プッシュ予定の内容が表示されるので、確認して Finish!
マージのコンフリクトを解消する
- コンフリクトしたファイルを確認する。両方向き矢印 ←→ が付いているファイルがコンフリクトしたファイル。スター * が付いているファイルはコンフリクトしていない。
- ファイルごとに解決。コンフリクトしたファイルを開いて >>>> やら ==== やらを手がかりに手直しした後、ファイルを右クリックして [Team] > [Add to Index] すれば、他のファイルと同じように * になる。もし元のファイルと同じ内容に戻った場合は * がつかない。いずれにせよ←→は消える。
- 仕上げ。全てのコンフリクトしたファイルから ←→ が消えたら完全解決まで後一歩。通常のコミット時と同じように [Team] > [Commit] でコミットすれば完了。
マージコミットを作る (git merge --no-ff)
- [Team] > [Merge...] でマージの設定を開く
- マージするブランチを選ぶ
- "Fast forward options" で "If a fast-forward, create a merge commit" を選んでマージ
- EGit 2.3 以降
- History ビューなどで操作するとできない
タグを作って共有する (git push --tags)
git では、タグを作って普通にプッシュしても反映されない。明示的にタグをプッシュしないといけない。
- ヒストリーで、タグを打ちたいコミットを右クリックして [Create Tag...]
- タグの名前と、タグの説明文を入力して [OK]
- プロジェクトを右クリックして [Team] > [Remote] > [Push...]
- リポジトリの URL が合っていることを確認して [Next]
- 真ん中右の方にある [Add All Tags Spec] をクリックして [Next]
- タグ追加の結果(予定)が表示されるので、確認して [Finish]
昔に帰りたい (git checkout か git reset など)
昔に帰りたいというのは、タイムマシンで昔の様子を見に行って、また現在に戻ってきたいのか、これまでに積み上げた数コミットを捨ててやり直したいのか、どっち?
前者
- ヒストリーから、該当時点のコミットを選んで右クリックして [Checkout]
後者(捨てたコミットは保険として残るけど、基本的には捨てた扱い)
- ヒストリーから、該当時点のコミットを選んで、右クリックして [Reset] > [Hard]
リベースしたい (git rebase master topic)
master ブランチの上に topic ブランチをリベースする場合。
topic ブランチを書いている間に master ブランチが進んでしまったときとかに使う。
topic ブランチに切り替えた状態で、次のどちらかの操作を行う。
- パッケージエクスプローラから
a. [Team] > [Rebase...] で Local の master を選んでリベース - ヒストリーから
a. master ブランチを右クリックして [Rebase on Top of]
コミットをまとめたい (git rebase -i) since 3.2
ヒストリーから対象のコミットを右クリックして [Rebase Interactive]
プッシュ前のまずいコミットを歴史から消し去りたい (git rebase -i)
直前のコミットであれば EGit でも何とかなるが、そうじゃないと EGit では難しい。おとなしくコンソールで git rebase -i を打ったほうがいい。
直前のコミットの場合…
- 消し去りたい情報を削除する
- パッケージエクスプローラから [Team] > [Commit]
- ダイアログ右上の、三角に矢印がついたボタン (Amend Previous Commit) を押す
- コミットする
改行文字を強制したい (.gitattributes)
対応してない!!!こんなバグレポートが上がっている。
- Bug 421364 - Reliable line ending management in cross platform Linux/Windows with mixed native CLI & EGit usage
- Bug 342372 - support gitattributes
非対応
考え中
特になし
番外編
EGit をバージョンアップする
- メニューの [Help] > [Install new Software...]
- 右上の Add ボタンから EGit の更新サイトを登録する
- Name に EGit
- Location に http://download.eclipse.org/egit/updates
- 適当に選んで選んでアップデートする。以下のあたりを選べば大丈夫かも。
- Eclipse Git Team Provider
- Eclipse Git Team Provider
- JGit
- Java implementation of Git
参考: