Eclipse EGit for git repo management

Eclipse EGit plugin allows one to perform most every day git operations through the gui. (e.g commit with a sign-off/gerrit ID. View history, hard-reset, difference comparisons, Stashing, branching, etc.. )

The main advantage is that it makes some operations faster than through the command line, (e.g one doesn’t have to type in file names or copy commit-id’s).

Egit is only a thin layer on top of git itself. So it does the same git commands underneath.

Compatibility
Linux/Windows/Mac. Already available in Red Hat Developer Toolset (DTS).

Installation

It is installed on most Eclipse distributions already.
If not:
sudo yum install eclipse-egit
To find out if you have it, go to the drop down menu Window -> Views -> Other … search for “git”.
eclipse window view other
You should see a bunch of Git views:
Git views

In case it is not, look here:
 http://www.vogella.com/tutorials/EclipseGit/article.html#eclipseinstallation

Git Staging Area
It’s easy to add or remove files from staging area for commits.
Open the “Git Staging” view (as above) for your project.

If you double click on your files, you will see a comparison between your modifications and HEAD. This is useful when you want to tidy your code before a commit:
git stage compare

Now you can drag files into the staging area to prepare for your commit.
You can iterate over your files very quickly this way (compare & add to staging).
Git Staging

You can un-stage by dragging files back again.

Git Commit
You can perform a commit with ‘signed off’  a ‘gerrit-id’ and you can amend if amendment is needed:
git commiting annotated

You might notice that the commit-ID is all 00’s when you press the button. This is ok because it will be replaced with a full commit id when you do the actual commit.

As a bonus, you don’t have to download the hooks script, Eclipse automatically generates a unique commit id for you.

Git Branching
Enable the git tool bar for your perspective:
Open the drop down menu: Window  -> Customize Perspective -> Command Groups Availability
find ‘git’  and enable it:
git toolbar

Now click on a file and then on the branching icon:
git toolbar branch

And you can now switch to another branch, checkout a new branch, delete/rename existing branches. You can even branch based on a remote repo or a stash:
git branch select

History
You can enable the ‘git history’ view (Drop down menu: Window -> Views -> Other) and view the git history:
git History

You can perform hard-resets, branch of commits, rebases. You can view the files from individual commits in the bottom right plane and you can compare commits side-by-side.  This is useful if you want to see what you did or what changes were pulled in:
git history compare

With filters you can see which commits have touched the file that you have selected and which lines were altered by whom:
git history filter

Git Annotation (blame)
If you select a file ->team -> show annotations, the left margin turns orange. When hovering over the margin, a window pops up showing who last-modified the line.
git team annotations

git annotation mouse over

Git Stashing
You can open the “Git Repository” view. (Window -> view -> other). From here you can stash by right-clicking on a repo. You can view your stashes and apply them.
git stashing

Git import
And of course if you don’t already know, you can import git repositories. (File -> Import).
Either clone a repo from URI or from a local git repository.

git import

Merging
If you did a pull and have merge conflicts, the staging area will help you find files that conflict. Then you can use the merge tool to see a side by side comparison of your changes and the other person’s changes. There is also a button to view the ancestor.
Git merge tool

Git merge tool (use head)

For details, please see Vogella’s Merge-resolution section.

Once the merge is complete, add the files via the staging area and there will be a button to complete the merge.

My preferences

For me personally, EGit fulfills 95% of my git needs. However some things I still prefer to do via the command line, e.g:

  • Interactive rebase  (pasting in commit id is sometimes easier than fiddling with gui)
  • push to review (#gives me link to my gerrit review)

Sources:
For a more complete tutorial, please visit our friend Vogella:
http://www.vogella.com/tutorials/EclipseGit/article.html

Feel free to contact me if you have questions:  lufimtse AT redhat DOT com.

Share

  1. > Egit is only a thin layer on top of git itself.

    This is wrong, EGit is based on JGit which implements the git data structures and algorithms in Java.

    > push to review (#gives me link to my gerrit review)

    EGit also gives the link to the gerrit review in the dialog box showing the push result (it’s just showing the message sent by the Gerrit server)

Leave a Reply