Press enter to see results or esc to cancel.

EGit Iteractive Adding

So what is “interactive adding” in git? Imagine situation when you change two or three lines in file (this could be also two or three blocks/methods), then you realize that you will want to commit those changes in two (three or more) separate commits.

Here is Al Blue’s description how interactive adding works in native git: Git Tip of the Week: Interactive Adding

What about EGit? Honestly this is currently supported … but it isn’t really straight forward to access. You need to select a file then choose from context menu Team > Compare With > Git Index and then you can easily move changes around, finally when you are happy with both versions (left is working tree and right is one that will be staged/added to index) just save compare editor contents. Version from right hand side will be added to index as it is in this editor.

OK, so now you can easily stage and unstage partial changes … maybe you would also like to partial replace staged changes by version in HEAD? Currently in version 1.1 you can compare version from git index with HEAD version using context menu Team > Compare With > Git Index with HEAD, but you cannot overwrite anything … yet, because (hopefully) in 1.2 such option will be available. Here is patch that adds this functionality (to be honest this is a side effect…).

And what about (my favorite) Synchronize View? Unfortunately EGit 1.1 don’t allow to move any changes in compare editors launched from Synchronize View … but with change mentioned above and with this one both features would be available from Git Commits model (before it was named as Git Change Set model)

Here is a short screen cast that shows how this work:

 

Comments

8 Comments

Dariusz Luksza: EGit Iteractive Adding

[…] Original post: Dariusz Luksza: EGit Iteractive Adding […]

Carsten

There is one thing that escapes me: it’s good practice to perform fine-grained commits with individual commit messages (which is where interactive adding helps!).

OTOH, Gerrit forces you to join all commits together into one big “blob commit”.

Dariusz Łuksza

@Carsten
Working with Gerrit is little bit tricky. You (and yours team) need to find theirs own patch-size, because if you post very small patches that connects into huge change-set-chain you’ll end up with rebase/cherry-pick hell. On the other hand working with huge patches review process can take ages …

Tomasz

Cool! The video quality could a little bit better, but for the feature itself: great work!

Sol

Hey Darius, two quick questions:
– Do you know if there is any ETA for 1.2 ? Also
– Also, it is possible to add both patches to an EGIT 1.1 version or do I have to wait? The stage hunk\line part for me is essential and having that ability is one of the reasons I’m still not fully on EGIT, but using EGIT + GIT Gui

Thanks

Sol

Dariusz Łuksza

@Sol
EGit 1.2 was released December, 23rd 2011 so grab an update from Eclipse Market place or from official EGit update site 😉

Paulo Almeida

Hi,

I can stage partial changes using this method, but can I commit them in EGit? When I tried, I had to select the file, and all the changes in the file got committed. Is there a way to do this without going to the command line? My version of EGit is 2.2.0.

Paulo Almeida

Nevermind my previous comment. For anyone else looking for this, you can commit partially staged changes in the Staging View (Window -> Show View).

Anyway, thanks for the post, it showed me that this was possible in the first place.


Leave a Comment

Leave a Reply to Dariusz Luksza: EGit Iteractive Adding Cancel reply

Dariusz Łuksza

Programmer, Motorbike rider, Lifetime learner, OpenSource enthusiast. More...

http://luksza.org/