tummychow / git-absorb

git commit --fixup, but automatic
https://crates.io/crates/git-absorb
BSD 3-Clause "New" or "Revised" License
3.38k stars 58 forks source link

Add instructions on what to do when there are still staged changes after running git absorb #21

Open danielcompton opened 5 years ago

danielcompton commented 5 years ago

I ran git absorb and it created a number of fixup commits, but still left many staged changes. The documentation doesn't say what to do here, or what this means. I'm assuming that it means that absorb couldn't find any existing commits to fixup?

It could be good to explain what this means in the documentation, and give suggested remediation steps. If you have any staged changes then you can't proceed to the next step of git rebase -i --autosquash.

Apologies if I'm misunderstanding something!

tummychow commented 5 years ago

I'm assuming that it means that absorb couldn't find any existing commits to fixup?

yep, this understanding is correct. absorb will leave things in the index if it couldn't find a place to absorb them into.

i believe nickolay actually added some logging for this in #17 , which i just cut into a new release (https://github.com/tummychow/git-absorb/releases/tag/0.5.0) - give that a try and let me know what you think?

nunofgs commented 1 year ago

It would be awesome to have some sort of interactive mode. Maybe a flag -i to force git-absorb to ask you which commit to place the changes.

Edit: maybe even an interactive mode such as git's patch staging mode (git add -p). It could show you each chunk and it would ask me which commit I'd like to absorb into. I could then decide to "split chunks", "do nothing" or choose a commit from the list.

tummychow commented 1 year ago

It would be awesome to have some sort of interactive mode. Maybe a flag -i to force git-absorb to ask you which commit to place the changes.

sorry but

1) implementing all those prompts would be a colossal amount of work

2) which is almost 100% redundant with the existing functionality of git rebase -i

if you want to arrange the commits manually, that's literally what interactive rebases are already for (e: which, by the way, is how git absorb itself actually works - if you only disagree with git absorb a little bit, you can do the rebase yourself and adjust the ordering that git absorb came up with, you don't need an entirely new user interface for that).