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

Re: [PATCH 1/7] [doc] Add new gitmergeconflicts man page

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 5, 2026, 17:22 UTC
Message-ID
<xmqqik3gjc5j.fsf@gitster.g>
In-Reply-To
<e593f3ca-4a03-45a7-b0cc-6295a3a4939f@app.fastmail.com>
"Julia Evans" <julia@jvns.ca> writes:
Show 47 quoted lines
> Marie and I worked on the OURS AND THEIRS section today and I think it's clearer
> now but also longer (instead of shorter which was my dream). We added an attempt
> at humor at the end to hopefully help things a bit.
>
> 	"OURS" AND "THEIRS"
> 	-------------------
>
> 	Sometimes during a merge conflict, Git will use the terms "ours" and
> 	"theirs" (or "us" and "them"). For example, `git status` might say that
> 	a file was `deleted by us`.
>
> 	"Ours" and "theirs" are both commits: "ours" is the current
> 	`HEAD` commit, and "theirs" is the other side being merged.
>
> 	The first part of a merge conflict (between `<<<<<<<` and `=======`) is
> 	from the "ours" side, and the second part (between `=======` and
> 	`>>>>>>>`) is from the "theirs" side.
>
> 	----
> 	FRUITS = [
> 	    "apple",
> 	<<<<<<< HEAD
> 	    "cherry",                      <- ours
> 	=======
> 	    "banana",                      <- theirs
> 	>>>>>>> add-fruit
> 	    "mango",
> 	    "orange",
> 	]
> 	----
>
> 	During a rebase, it can seem "upside down" because the "ours" commit is
> 	from the branch you're rebasing on (for instance `main` in `git rebase
> 	main`).
>
> 	These terms in Git all mean the same thing when dealing with a merge
> 	conflict:
>
> 	* "common ancestor" and "base". The files from this commit are "in stage 1".
> 	* "ours", "us", and `HEAD`. The files from this commit are "in stage 2".
> 	* "theirs", "them". The files from this commit are "in stage 3".
>
> 	If you're confused about what something like "deleted by us" means, it's
> 	often easiest to use some of the tools from
> 	<<tools,TOOLS FOR HANDLING MERGE CONFLICTS>> above to get more context.
> 	Finding the commit that deleted the file and seeing why is usually more
> 	helpful than trying to abstractly reason through what "us" means.
May I ask what is in scope for this effort?

We previously discussed updating the conflict markers (the 'HEAD' and 'add-fruit' labels in the example above). Doing so would require code changes, which goes beyond mere documentation updates. But if a minor code change like that makes the documentation much easier to understand, I think we should consider doing so.

Along the same line, if git status stopped saying "deleted by us" and instead used a different phrase, would that help reduce the "upside down" confusion [*]? Is it acceptable to bend the code a little if it helps the documentation?

[Footnote]
 * I suspect that the "upside down" feeling is not really about the
   terms "ours" and "theirs" themselves.  Rather, it comes from how
   one conceptualizes what 'rebase' does compared to 'merge'.
   During a rebase, we temporarily pretend that we are working on
   the upstream branch and replay our local changes on top of it.
   Once the user adopts this mindset, displaying the upstream state
   first (the point from which we start building the consolidated
   history) followed by the local state (what was done differently
   by the local side) becomes consistent with how 'merge' displays
   conflicts (where we start from our local state and merge the
   incoming changes).
Previous: Julia EvansNext: Julia Evans
Message 12 of 46 in “[doc] Add new page on merge conflicts”
  1. 0/7 [doc] Add new page on merge conflictsJulia Evans via GitGitGadget, Sep 24, 2026
  2. 1/7 [doc] Add new gitmergeconflicts man pageJulia Evans via GitGitGadget, Sep 24, 2026
  3. Junio C HamanoSep 24, 2026
  4. Junio C HamanoSep 24, 2026
  5. Patrick SteinhardtSep 30, 2026
  6. Julia EvansSep 30, 2026
  7. Junio C HamanoSep 30, 2026
  8. Patrick SteinhardtOct 1, 2026
  9. Julia EvansOct 1, 2026
  10. Junio C HamanoOct 2, 2026
  11. Julia EvansOct 5, 2026
  12. Junio C HamanoOct 5, 2026
  13. Julia EvansOct 5, 2026
  14. 2/7 [doc] git-merge: link to new merge conflicts guideJulia Evans via GitGitGadget, Sep 24, 2026
  15. D. Ben KnobleSep 25, 2026
  16. Julia EvansSep 25, 2026
  17. Junio C HamanoSep 25, 2026
  18. Ben KnobleSep 25, 2026
  19. Junio C HamanoSep 25, 2026
  20. Ben KnobleSep 25, 2026
  21. Julia EvansOct 2, 2026
  22. Junio C HamanoOct 2, 2026
  23. Julia EvansOct 2, 2026
  24. Junio C HamanoOct 2, 2026
  25. D. Ben KnobleOct 3, 2026
  26. Junio C HamanoOct 3, 2026
  27. Patrick SteinhardtSep 30, 2026
  28. 3/7 [doc] git-rebase: link to new merge conflicts guideJulia Evans via GitGitGadget, Sep 24, 2026
  29. 4/7 [doc] git-revert: link to new merge conflicts guideJulia Evans via GitGitGadget, Sep 24, 2026
  30. 5/7 [doc] git-cherry-pick: link to new merge conflicts guideJulia Evans via GitGitGadget, Sep 24, 2026
  31. Junio C HamanoSep 25, 2026
  32. Julia EvansSep 28, 2026
  33. Junio C HamanoSep 28, 2026
  34. 6/7 [doc] git-pull: link to new merge conflicts guideJulia Evans via GitGitGadget, Sep 24, 2026
  35. 7/7 [doc] ignore conflict markers in gitmergeconflicts.adocJulia Evans via GitGitGadget, Sep 24, 2026
  36. Junio C HamanoSep 24, 2026
  37. Jeff KingSep 24, 2026
  38. Julia EvansSep 28, 2026
  39. Jeff KingSep 29, 2026
  40. Junio C HamanoSep 29, 2026
  41. D. Ben KnobleSep 25, 2026
  42. Julia EvansOct 2, 2026
  43. D. Ben KnobleOct 3, 2026
  44. Julia EvansOct 5, 2026
  45. D. Ben KnobleOct 6, 2026
  46. D. Ben KnobleOct 6, 2026

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.