Chapter 3.6 rebasing "More Interesting Rebases" example requires direct checkout of commit by SHA1 instead of branch

Open
#1,994 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
45/100
Issue type
Documentation
Clarity
Mostly clear
Activity status
Stale
Tech stack
git
Domain
documentation

Research direction

Read the “More Interesting Rebases” section in the Git Branching—Rebasing chapter and inspect the linked interesting-rebase-1.png diagram. Reproduce the sequence, including creating client from C3 and checking out server, to confirm where the instructions diverge. Update the example or its instructions so the branch points and rebase result match the diagram, then verify the revised sequence.

Written by the indexing model from the issue text.

Description

bug
There's no existing/similar bug report.
  • I have searched the existing issues
This report is about a single actionable bug.
  • I'm reporting a single actionable bug
This report is about the ProGit book, version 2, English language.
  • This bug is not about a translation or old version
Bug covers book website/pdf
  • I confirm the bug is about the book as found on the website/pdf
Problem is present in the Pro Git book on the website?
  • This bug also affects the Pro Git book as published on the website.
Which version of the book is affected?

Source files

Describe the bug:

On page https://git-scm.com/book/en/v2/Git-Branching-Rebasing, https://git-scm.com/book/en/v2/images/interesting-rebase-1.png, I am assuming the commits are done in the order indicated by the number, e.g. C1 first then C2, C3, C4, etc. If so when C5 & C6 are created, branch server is pointing at C4. In order to get branch client to begin at C3 the user would have to use the command git checkout [C3 SHA] or similar after adding C5 & C6. If the user executes git checkout server (as I expected) the tree is wrong; client branches from C4, not C3.

Steps to reproduce:

view page https://git-scm.com/book/en/v2/Git-Branching-Rebasing, section "More Interesting Rebases"

Expected behavior:

This is not technically wrong. The client branch could have originated after a checkout of the raw C3 SHA, but if the user performs git checkout server to begin the client branch the command git rebase --onto master server client results in rebase conflicts, and it also means that "C3" is included. As a naive git user the first time I tried to follow the example I executed git checkout server not noticing that it was pointing at C4 instead of C3 before adding C8 while trying to reproduce the sequence. This led to difficulties in the rebase.

After studying the problem for a while I figured out what the issue was and performed a checkout on the raw C3 SHA before creating the client branch. This did behave as I expected, but it feels like this was not how the author intended the example to proceed.

It has just now occurred to me that immediately after creating commit C3 the user could create branch client with no commits then switch back to branch server and create commit C4. Branch client would then point at C3, and everything would work as I think is expected. To me it would be desirable to include these instructions for those of us who attempt to reproduce the flow in the diagram.

Screenshots:

No response

Additional context:

No response

Device

No response

Operating system

No response

Browser/application + version

No response

Dominant language
CSS
Stars
6.6k
Forks
2.1k
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from progit/progit2

All issues in progit/progit2

Similar issues

More Documentation issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.