Two commits touching the same file, represented by the identifier at the end of the rebase's commit line. If you look at each file as a column, you can see which commits would clash.
This is beautiful, and goes a long way towards making rebase more intuitive and useful .. I feel that there is so much power in Git (and other tools) that would be unleashed if only someone put a little more thought into the text user interface .. just seeing the columns on the right immediately explained to me what is going on, and I find this incredibly useful. Thanks!
When I tried rebasing my Clojure fork against upstream I got
Traceback (most recent call last):
File "/Users/michael.blume/bin/git-rebaser", line 96, in <module>
write_todo(file, first, last, comments)
File "/Users/michael.blume/bin/git-rebaser", line 61, in write_todo
f = "[%s] %s" % (SYM[i], f)
KeyError: 62
Could not execute editor
I'm guessing this is a case of the commits touching too many files?
You are running that in shell by hand. The python program running here is not shell. If you do a print(os.environ["GIT_EDITOR"]) in the python3 program you'll still see ~/bin/vim .
Each file gets an alpha-numeric character at a particular column, a list of which appears below the commit list.
Commits can be moved up and down safely (no conflicts) as long as they don't have any clashing columns.