git/list[1] front-page[2] threads[3] people[4] search[5] about
 

ORIG_HEAD after rebase is confusing

From
Hherr.kaste <herr.kaste@gmail.com>
Date
Oct 22, 2020, 20:31 UTC
Message-ID
<CAFzd1+62PmHBoVpMw-y4TC=bmc8N0wDpF2jQa7XGz2e+7Dos6A@mail.gmail.com>

Reading the git rebase manual and some answer on stackoverflow I assumed `ORIG_HEAD` will point to the original HEAD, the tip of the branch *before* I started rebasing. But it doesn't seem so.

For example, I have this:
  $ git log --graph --all --oneline
  * 9830f9f (master) X
  | * fb7b6a6 (HEAD -> feature) D
  | * 46b7a7a C
  | * da5e4c7 B
  | * 5c135da A
  |/
  * 6848823 Init
  $ git rebase master
  Successfully rebased and updated refs/heads/feature.
  $ git rev-parse ORIG_HEAD
  da5e4c7e9eb3b10c1efa08c534b9c9e4b92d9fd7
  $ git reflog
  a647bd7 (HEAD -> feature) HEAD@{0}: rebase (finish): returning to
refs/heads/feature
  a647bd7 (HEAD -> feature) HEAD@{1}: rebase (pick): D
  2f458e8 HEAD@{2}: rebase (pick): C
  0aa2160 HEAD@{3}: rebase (pick): B
  b957fc7 HEAD@{4}: rebase (pick): A
  9830f9f (master) HEAD@{5}: rebase (start): checkout master
  fb7b6a6 HEAD@{6}: checkout: moving from master to feature
  9830f9f (master) HEAD@{7}: commit: X
  6848823 HEAD@{8}: checkout: moving from feature to master
  fb7b6a6 HEAD@{9}: commit: D
  46b7a7a HEAD@{10}: commit: C
  da5e4c7 HEAD@{11}: commit: B
  5c135da HEAD@{12}: commit: A
  6848823 HEAD@{13}: checkout: moving from master to feature
  6848823 HEAD@{14}: commit (initial): Init

So `ORIG_HEAD` here points to the original B commit. (I expected the D.) Honestly, this doesn't make much sense to me in that I don't know *why* it even chooses B which is a middle commit in the chain. (And from reading the source `sequencer.c` I can't deduce it either.)

  $ git --version
  git version 2.29.0.windows.1

What I actually wanted to do was `git reset --hard ORIG_HEAD` fwiw. And for example `git diff HEAD..ORIG_HEAD` to check for unwanted changes after a merge conflict.

Regards, Caspar Duregger

Next: Phillip Wood
Message 1 of 5 in “ORIG_HEAD after rebase is confusing”
  1. herr.kasteOct 22, 2020
  2. Phillip WoodOct 26, 2020
  3. herr.kasteOct 26, 2020
  4. herr.kasteOct 26, 2020
  5. Phillip WoodOct 26, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.