Please recommend a Git client (GUI) for Windows featuring
- Full power of
git add -p, including editing patches.
- Full power of
git rebase --interactive, I like to edit/rename/reorder old commits.
Software Recommendations Stack Exchange is a question and answer site for people seeking specific software recommendations. It only takes a minute to sign up.Sign up to join this community
Try Git Extensions, a Git client for Windows that includes support for the features you are looking for.
By default, Git extensions sets the branch to rebase against to the branch you are currently working on. So, unless you change that, there is nothing to do and you get this 'noop' message. You have to rebase against something that is not your current HEAD. Either that is some number of commits back from your head (eg HEAD~4) or the origin's version of your branch (eg: origin/master) or a specific named commit.
During a rebase merge conflicts can occur. You need to solve the merge conflicts for each commit that is rebased. The rebase function in Git Extensions will guide you through all steps needed for a successful rebase.
It is possible to apply a single patch file or all patches in a directory. When there are merge conflicts applying the patch you need to resolve them before you can continue. Git Extensions will help you applying all patches by marking the next recommended step.
I can certainly recommend Atlassian's SourceTree software for Windows. I've previously used TortoiseCVS, GitHub (and their Windows application), and just plain Git with the command line previously, and love how SourceTree makes the things that should be quick and easy with a button just that, while keeping the power of the git console just one click away: the Terminal toolbar button.
Some of the more complex tasks you may need to use the terminal for with commands such as those in your question, other tasks such as Renaming things you may find readily available from a right-click context menu, and you can add your own custom git actions to this - though it is worth noting that if you're using a hosted repository service, support for the more complex git features can vary between providers and their implementations.
If you normally try to work to GitFlow principles with how you manage your branches and commits, then you'll love the GitFlow toolbar button which gives you the ability to start and finish releases, features, hot-fixes etc with just a couple of clicks.
Where some software is locked to only allow you to use their own hosted repository service, SourceTree allows you to clone and work a repository from any given URL. It has some timesaving features to quickly locate repositories on BitBucket, GitHub, and Stash, but if you host your own Git repository or wish to connect into a different hosted one then it should also work fine (I've successfully cloned and worked with a SourceForge repository previously in SourceTree for example).
The application's user interface is very intuitive, beautiful and robust/stable -things which are all important to me. The code review displays make it easy to see exactly what has been changed and shows changes in 'hunks' (groups of changes located close together in a file) which can be individually staged for commit or discarded, rather than having to make decisions based on all the changes in a file. The colour coding is helpful, and the selecting of files and scrolling through changes performs fast even on my really low spec Windows Vista (shocking I know) development workstation.
Understanding commit history is easy with the lovely graphical display alongside the commit descriptions, and conflict resolution is made a breeze.
Hopefully this gives a taster sufficient to convince you to try it and see for yourself whether this meets your needs.