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

[PATCH v2 5/5] git-rebase.txt: add a note about 'ORIG_HEAD' being overwritten

From
Philippe Blain via GitGitGadget <gitgitgadget@gmail.com>
Date
Jan 10, 2023, 13:15 UTC
Message-ID
<7eed8f353764774cc7335c51338db6cba14675aa.1673356522.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1456.v2.git.1673356521.gitgitgadget@gmail.com>
From: Philippe Blain <levraiphilippeblain@gmail.com>

'ORIG_HEAD' is written at the start of the rebase, but is not guaranteed to still point to the original branch tip at the end of the rebase.

Indeed, using other commands that write 'ORIG_HEAD' during the rebase, like splitting a commit using 'git reset HEAD^', will lead to 'ORIG_HEAD' being overwritten. This causes confusion for some users [1].

Add a note about that in the 'Description' section, and mention the more robust alternative of using the branch's reflog.

[1] https://lore.kernel.org/git/28ebf03b-e8bb-3769-556b-c9db17e43dbb@gmail.com/T/#m827179c5adcfb504d67f76d03c8e6942b55e5ed0
Reported-by: Erik Cervin Edin <erik@cervined.in>
Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
---
 Documentation/git-rebase.txt | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index f9675bd24e6..d811c1cf443 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -38,6 +38,13 @@ The current branch is reset to `<upstream>` or `<newbase>` if the
 `git reset --hard <upstream>` (or `<newbase>`). `ORIG_HEAD` is set
 to point at the tip of the branch before the reset.
 
+[NOTE]
+`ORIG_HEAD` is not guaranteed to still point to the previous branch tip
+at the end of the rebase if other commands that write that pseudo-ref
+(e.g. `git reset`) are used during the rebase. The previous branch tip,
+however, is accessible using the reflog of the current branch
+(i.e. `@{1}`, see linkgit:gitrevisions[7]).
+
 The commits that were previously saved into the temporary area are
 then reapplied to the current branch, one by one, in order. Note that
 any commits in `HEAD` which introduce the same textual changes as a commit
-- 
gitgitgadget
Previous: Philippe Blain via GitGitGadgetNext: Phillip Wood
Message 18 of 20 in “Documentation: updates and a correction around 'ORIG_HEAD'”
  1. 0/5 Documentation: updates and a correction around 'ORIG_HEAD'Philippe Blain via GitGitGadget, Jan 7, 2023
  2. 1/5 git-cherry-pick.txt: do not use 'ORIG_HEAD' in examplePhilippe Blain via GitGitGadget, Jan 7, 2023
  3. Junio C HamanoJan 8, 2023
  4. Philippe BlainJan 9, 2023
  5. 2/5 git-reset.txt: mention 'ORIG_HEAD' in the DescriptionPhilippe Blain via GitGitGadget, Jan 7, 2023
  6. 3/5 git-merge.txt: mention 'ORIG_HEAD' in the DescriptionPhilippe Blain via GitGitGadget, Jan 7, 2023
  7. 4/5 revisions.txt: be explicit about commands writing 'ORIG_HEAD'Philippe Blain via GitGitGadget, Jan 7, 2023
  8. Junio C HamanoJan 8, 2023
  9. Philippe BlainJan 9, 2023
  10. 5/5 git-rebase.txt: add a note about 'ORIG_HEAD' being overwrittenPhilippe Blain via GitGitGadget, Jan 7, 2023
  11. Junio C HamanoJan 8, 2023
  12. Philippe BlainJan 9, 2023
  13. 0/5 Documentation: updates and a correction around 'ORIG_HEAD'Philippe Blain via GitGitGadget, Jan 10, 2023
  14. 1/5 git-cherry-pick.txt: do not use 'ORIG_HEAD' in examplePhilippe Blain via GitGitGadget, Jan 10, 2023
  15. 2/5 git-reset.txt: mention 'ORIG_HEAD' in the DescriptionPhilippe Blain via GitGitGadget, Jan 10, 2023
  16. 3/5 git-merge.txt: mention 'ORIG_HEAD' in the DescriptionPhilippe Blain via GitGitGadget, Jan 10, 2023
  17. 4/5 revisions.txt: be explicit about commands writing 'ORIG_HEAD'Philippe Blain via GitGitGadget, Jan 10, 2023
  18. 5/5 git-rebase.txt: add a note about 'ORIG_HEAD' being overwrittenPhilippe Blain via GitGitGadget, Jan 10, 2023
  19. Phillip WoodJan 10, 2023
  20. Junio C HamanoJan 13, 2023

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.