Skip to content

Instantly share code, notes, and snippets.

@jhannah
Last active October 23, 2024 20:52
Show Gist options
  • Save jhannah/4560a7e8e71815b3941a146eedf4145b to your computer and use it in GitHub Desktop.
Save jhannah/4560a7e8e71815b3941a146eedf4145b to your computer and use it in GitHub Desktop.
Git history visual clarity

So we've got 2 primary branches: main (prod) and develop. We use GitHub. The develop branch is protected: You need a PR to change develop. So on production release: develop merges to main. The code is now identical, but those two branches are not the same commit. (main has an "extra" merge commit.) I can't push to get them on the same commit:

git:(develop) ✗ git merge origin/main --ff-only
Updating bf8228b..f9c3e42
Fast-forward
✗ git push
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: error: GH006: Protected branch update failed for refs/heads/develop.
remote: - Changes must be made through a pull request.

And I can't create a PR because GitHub doesn't allow a PR with 0 code changes. Just curious how others handle this. Seems visually ugly (git history) that they never become the same commit.

Desired state

Visually cleaner: On production releases, main and develop are the same commit:

  gitGraph
    commit
    commit
    branch develop
    checkout develop
    commit 
    commit
    checkout main
    merge develop
    commit
    commit
Loading

Current state

Unfortunate GitHub reality: main and develop circle each other, but are never the same commit:

hmm... Mermaid can't really visualize --ff-only? ... yes it can?

hmmm... kinda weird visualization of main on 3rd merge?

  %%{init: { 'gitGraph': { 'mainBranchOrder': 2 }}}%%
  gitGraph
    commit
    commit
    branch develop order: 3
    checkout develop
    commit
    commit
    checkout main
    merge develop
    commit
    commit
    branch hotfix order: 1
    commit
    commit
    checkout main
    merge hotfix
    checkout develop
    merge main
    checkout develop
    commit
    commit
    checkout main
    merge develop
Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment