Learn Git Branching
An interactive site for learning Git branching earns praise both as a beginner-friendly visualization tool and a refresher for experienced developers, prompting people to share their own aliases, workflows, and complementary tools like tig, fzf integrations, and Magit. Much of the debate centers on how Git concepts such as branches, rebasing, and commit history should be understood and used in professional workflows, including expectations around “clean” PRs versus preserving messy, exploratory history. Commenters also touch on UX details like language detection and keyboard focus issues, and on the broader problem that many developers use Git daily without ever being taught its underlying model.
Git aliases and workflow shortcuts
- Many comments share extensive Git aliases for common operations (status, log, rebase, cherry-pick, amend, push, diff, reset, stash).
- Some prefer powerful, multi-command aliases via
!shell invocation in.gitconfig; others rely on shell aliases (zsh, fish) or IDE keybindings. - There is debate about multi-command aliases: some see them as essential; others note portability issues, especially on Windows
cmd. - Several people emphasize aliases to improve commit quality (e.g., forcing manual staging, avoiding
-a, or using amend-only aliases for tiny fixes). - Fuzzy-finder integrations (fzf) and tools like
tig,lazygit, and scripts likefzf-git.share recommended for interactive staging and branch management.
Perceptions of Learn Git Branching and related tools
- The tutorial is widely praised as an excellent, visual way to learn and teach Git, useful both for beginners and experienced users.
- Some report they or colleagues react with “this is cool” but never actually work through it, suggesting a motivation/engagement gap rather than a content problem.
- Other visual resources (e.g., D3-based Git explainers) and terminal UIs (
tig, magit, lazygit) are mentioned as complementary.
Conceptual models: branches, DAGs, refs
- Several comments stress that understanding Git as a directed acyclic graph (DAG) plus refs/pointers makes many operations intuitive.
- There is argument over whether Git “really” has branches or just moving pointers; some find the pointer model clarifying, others think it’s overly reductionist.
- Hooks and trailers are suggested to record branch names and other metadata in commits for easier history inspection.
Rebase vs merge, history cleanliness, and PR practices
- Strong disagreement appears around “proper” workflows:
- One side values clean, rebased histories and well-structured commits, seeing messy branches, “temp/WIP” commits, and frequent merges from main as unprofessional.
- The other side prefers preserving “real” history or doesn’t care about intermediate commits if the final diff is good, often relying on squash merges.
- Some argue rebasing is under-taught and over-feared; others highlight its “footguns” and real-world cases of developers breaking branches.
- There are recurring complaints about large, messy PRs and lack of commit hygiene; some would even use “cleaning up a PR” as an interview filter.
- A tangent debates small vs large PRs and the pain of many dependent PRs, especially with tool limitations.
Git education and everyday practice
- Multiple comments note that formal education rarely teaches Git deeply; many professionals end up cargo-culting commands learned from GUIs or colleagues.
- Some teams actively train new members in rebasing and history cleanup; others accept that many developers treat Git as a glorified “save” button.
Site and UX issues
- Language selection behavior is criticized; users want browser language respected over heuristics. The author clarifies it already uses
navigator.language, not geolocation. - Some users initially cannot type into the tutorial’s terminal until clicking a specific area or refreshing, suggesting a focus/interaction bug.