Any kind of mass move/edit seems easier to do through the command line. Then, looking at perforce, I'm finding more and more cases where I'm dropping out of P4V and into command line tools. Picking individual hunks/lines is sometimes another - although I prefer to commit with such frequency when using git, that it's extremely rare I have changes that belong in different commits. Getting a good summary of a set of changes is sometimes one of them. It does happen, but it's not the common case.
The git CLI is simply second nature enough to me at this point that waiting for a GUI to load, refresh, etc. I keep filing bug reports - truncated diffs because new files were "too large" (presumably someone trying to fix the hang and stall issue), a client that only renders the top half of the window consistently when on a portrait 4K monitor, etc.
The admittedly large repositories I sometimes deal with cause things to hang and stall, breaking my flow. > I think anyone who uses the CLI is either trying too hard or hasn't realized the beauty of a git GUI. When I open the "Pull" dialog, for example, the way the controls in the UI are grouped and the kinds of controls that are used help me logically understand what "Pull" can do. The structure and organization of the UI helps me to understand how git operates. Most of what I've learned about git has been through clicking around in Git Extensions. I don't see why I'd want to run a bunch of commands to see stuff scroll by in my format-constrained terminal when I can have a live, all-up view of multiple aspects of a repo all at once, with relevant, context-sensitive commands on whatever I click on. I appreciate the power of the CLI for accomplishing tasks, but I've never understood how people prefer it when it comes to simply viewing and understanding the state of something. A GUI gives me live, persistent information organized well on the screen. I like that it doesn't try to layer its own agenda over the Git workflow, shows all the console input/output it uses, and warns me when I'm about to do something stupid, but overall I like it for the same 3 reasons that I like most GUIs:
Next major features should be git stash (be able to prepare a stash like a commit, by file/hunk/line) and some git log related feature (to easily git commit -fixup a chosen commit in a log for example). I continue to use fugitive for Gblame and Gdiff. The current workflow is quite robust: you can easily navigate through all the diffs to review them, stage by file/hunk/line/part of line, write the commit message (or amend the last commit), jump to the diff locations in their files. For the moment, it "only" focuses on stage/unstage and commit feature (which is the main use case to me). My learning curve of fugitive has been slow, and I have never be able to stage efficiently with it.Īnd then, a colleague showed me magit: I waited for a year that something similar comes to vim, trying to push this idea to fugitive, without success.įinally, some first experiments showed that partial hunk stage was feasible, and I created vimagit.Īs you will see, it is far from whole magit features.
Īs soon I started to work with git, I installed fugitive. You may want to give a try to vimagit so.