Hi Junio, On 18. Dec 2023, at 19:43, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Michael Lohmann <mial.lohmann@xxxxxxxxx> writes: > >> A `revert` in an interactive rebase can be useful, e.g. if a faulty >> commit was pushed to the main branch already, so you can't just drop it. > > But wouldn't that be typically done simply by running "git revert", > totally outside the context of "git rebase -i"? > > Interactive rebase is more geared toward rearranging an already > built history *after* such a "git revert" is made and possibly other > commits are made either before or after that commit that was created > by "git revert". Right - I recently found myself in a situation where a coworker merged a faulty commit leading to a build failure and (given that only the two of us actively worked on that project) we coordinated that he would prepare a proper fix, while I wanted to rebase my current feature branch on master, but with that commit reverted. For the sake of a clean history I preferred to have the revert commit right at the merge-base, instead of somewhere in the middle of all of my commits. But you are right - if there are more than two people working on a project, the typical way of properly doing this would be to revert the offending commit in the master branch until a fix is available. You can also do the revert you want to create in your feature branch and directly update the master: - `git rebase -i origin/master` - add the following two lines to the top of the todo list: revert B exec git push origin @:refs/heads/revert-commit Instead of - `git switch origin/master -c revert-commit` - `git revert B` - `git push origin HEAD` - `git switch -` - `git rebase revert-commit` So with the interactive revert you can create the "revert-commit” branch "directly from within your own branch”. But indeed - it really is not needed... > A much cleaner way to structure your branch is not to muck with such > tentative changes *on* the branch you eventually want to store the > final result on. Fork another branch and rebase B away: I really like that workflow! I’ll adapt it :) So in total: I don’t think documenting this is necessary (that is also why my first message was not directly the patch, but the question why this is undocumented) and it might even lead to the unclean workflow that I ended up having, so even from that perspective it might not be a good thing. Thank you very much for this very detailed explanation of the workflow! Michael P.S. I am sorry - the first reply only went directly to Junio and not the mailing list