-
Lazygit maintainer here: I've found myself in your shoes quite a bit (without the commit signing part) and a few weeks ago I put up a draft PR where if a file is selected, it highlights the commits that touch that file. Typically you want to amend the most recent commit that changed the file and typically that commit is visible without needing to scroll. But I haven't spent much time thinking about what the ideal UX is, how to activate it, etc.
PR: https://github.com/jesseduffield/lazygit/pull/2654
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
Boy have I got the thing for you. git absorb - https://github.com/tummychow/git-absorb
The way to work with it is:
git add file1
-
I use IntelliJ IDEA and often rely on their own Git functionality. But it cannot stage specific lines, only whole chunks [1]. For that, I've been using lazygit for a couple of months now. I like its simple UI and that it makes staging specific lines very easy and quick. If you like lazygit, you might also be interested in similar Git CLI clients that I collected here [2].
[1] https://youtrack.jetbrains.com/issue/IDEA-186988/Allow-commi...
[2] https://github.com/frontaid/git-cli-tools#clients
-
I found lazygit after building something of my own thay solves some of these problems for me - git-fuzzy [0].
I'd like to share some of my thoughts about the comparison.
lazygit is a TUI for git which can behave in a standalone fashion. It's also designed to be quick and easy to use to perform quite advanced actions but ones that a seasoned git user may really want when working with git history. Since I'm already a seasoned git user the main feature I like about lazygit is the ability to surgically work with patches.
All that said, a majority of my workflow is tightly bound to git-fuzzy. I use its CLI composability quite heavily in combination with aliases and functions - git-fuzzy excels in this particular way (`git fuzzy log $(git fuzzy branch)` which I invoke using `gl $(gb)` by way of aliases). git-fuzzy is better for working with git-log or git-reflog and interactively searching them.
I personally quite like what I made (for myself), though I wish there was a world where I could quickly and easily mash both of these projects together.
[0] https://github.com/bigH/git-fuzzy
-
I've used this before and it is great. I mainly use Sublime Merge these days, though: https://www.sublimemerge.com/
-
-
FWIW, the per line staging functionality in GitUp (https://gitup.co/) is quite easy and straightforward. Very lightweight program that you can open via cli (`gitup` when in a git directory)