here you goThings I’ve made, read and saved — shared here.

Archive

9,565 entries: 46 from X, 8,923 from Pinboard, saved 1998 to 2026.

Browse by tag, site, author, folder or language

Tags

Sites

Authors

Folders

Languages

35 entries#git ×

March 2026

Introduction - Mergiraf

mergiraf.org

Mergiraf can solve a wide range of Git merge conflicts. That's because it's aware of the trees in your files! Thanks to its understanding of your language, it can often reconcile the needs of both sides.

mergiraf.orgPinboardPermalink

#git

2025

How Core Git Developers Configure Git

blog.gitbutler.com

git butler, Git client for simultaneous branches on top of your existing workflow, talked to git core developers and asked them to help define What git config settings should be defaults by now. Here are some settings that even the core developers change.

# clearly makes git better

[column]
        ui = auto
[branch]
        sort = -committerdate
[tag]
        sort = version:refname
[init]
        defaultBranch = main
[diff]
        algorithm = histogram
        colorMoved = plain
        mnemonicPrefix = true
        renames = true
[push]
        default = simple
        autoSetupRemote = true
        followTags = true
[fetch]
        prune = true
        pruneTags = true
        all = true

# why the hell not?

[help]
        autocorrect = prompt
[commit]
        verbose = true
[rerere]
        enabled = true
        autoupdate = true
[core]
        excludesfile = ~/.gitignore
[rebase]
        autoSquash = true
        autoStash = true
        updateRefs = true

# a matter of taste (uncomment if you dare)

[core]
        # fsmonitor = true
        # untrackedCache = true
[merge]
        # (just 'diff3' if git version < 2.3)
        # conflictstyle = zdiff3 
[pull]
        # rebase = true

read rest of the article on why

2024

github

Discovering Small GitHub Projects for Contributing to FOSS; interesting use of github search.

Tools related to github:

notes#git#github

2023

Git

Learning Git

Why Git is hard Confusing git terminology; Nov 2023 by Julia Evans.

Things I wish everyone knew about Git ) and (Part II) by Mark Dominus ( plover.com )

Inside Git by jvns.

eficode-academy/git-katas, A set of exercises for deliberate Git Practice

Oh My Git, learn git through playing games.

Artisanal Handcrafted Git Repositories | drew's dev blog -- "I’m going to talk about how to handmake your git repositories without using these silly git commands. You might also learn a bit more about how git works under the hood during the process, or whatever."

So You Think You Know Git - FOSDEM 2024 - YouTube by Scott Chacon, now creator of Git Butler

USEFUL CONFIG STUFF

$ git config --global alias.staash 'stash --all'
$ git clean

https://gist.gihub.com/schacon

$ git config --global alias.bb !better-branch.sh

Conditional Configs
[includeif "gitdir:~/projects/work/"]
    path = ~/projects/work/.gitconfig
[includeif "gitdir:~/projects/oss/"]
    path = ~/projects/oss/.gitconfig

OLDIES BUT GOODIES

$ git blame -L
git blame a portion of the file

$ git log -L 15,26:path/to/file
works the same way with git log

$ git blame -w
ignore whitespace

$ git blame -w -C
.. and detect lines or copies in the same commit

$ git blame -w -C -C
.. or the commit that created the file

$ git blame -w -C -C -C
.. or any commit at all

$ git log -S files_watcher -p
the pickaxe

$ git reflog

$ git diff --word-diff

$ git config --global rerere.enabled true
REuse REcorded REsolution

NEW STUFF

$ git branch --column

$ git config --global column.ui auto
$ git config --global branch.sort -committerdate

$ git push --force-with-lease
This one is better than using --force by default

signing commits with ssh
$ git config gpg.format ssh

$ git push --signed
github and gitlab do not support it.

$ git maintenance

gc(disabled),
commit-graph and prefetch (hourly),
loose-objects incremental-repack (daily)
pack-refs (none)

BIG REPO STUFF

Half a million files in working directory

windows rpeo - 300gb, 3.5 million files
linux kernel - 4.5gb in comparison

prefetching
$ git for-each-ref | grep prefe

commit-graph
$ git config --global fetch.writeCommitGraph true

filesystem monitor
$ git config core.untrackedcache true
$ git config core.fsmonitor true

partial cloning
$ git clone --filter=blob:none
$ git clone --filter=tree:0

GITHUB STUFF

auto merge

merge queue

$ git ls-remote

"all mypull requests are actual refs"

$ git config remote.origin.fetch '+refs/pull/*:refs/remotes/origin/pull/*'

$ git fetch


GITBUTLER

virtual branches

Tools

jesseduffield/lazygit: simple terminal UI for git commands

https://gitless.com -- A Git-compatible VCS that does away with the staging area (and stashes), and instead has separate working dirs for every branch (branch = automatically stashed). They have a detailed analysis of Git that explains their design: What's wrong with Git? A conceptual design analysis #pdf

chshersh/zbg: ✨ Zero bullshit git, porcelain for git in ocaml

Git man page generator; funny.

Jujutsu/jj - A Git-compatible DVCS that is both simple and powerful -- It combines features from Git (data model, speed), Mercurial (anonymous branching, simple CLI free from "the index", revsets, powerful history-rewriting), and Pijul/Darcs (first-class conflicts), with features not found in most of them (working-copy-as-a-commit, undo functionality, automatic rebase, safe replication via rsync, Dropbox, or distributed file system). Basic jj Workflows

GitHub - jnsahaj/lumen: Beautiful git diff, Instant AI Git Commit message, Git changes summary from the CLI (no API key required) -- A command-line tool that uses AI to streamline your git workflow - generate commit messages, view diff and explain changes, all without requiring an API key.

Git workflows

Hosted git

Cloudflare Artifacts --

notes#git

2022

Git Under the Hood

articles.foletta.org

There’s already loads of articles out there on git internals, so what’s different about this one? Two things:

  1. We’re going to avoid the lower level ‘plumbing’ git commands and limit ourselves to the five most common ‘porcelain’ commands: git {init, add, commit, branch, checkout}. All other work will be done using standard command line utilities.
  2. Using the R packages git2r and tidygraph, we’ll dynamically build up a picture of the connections between git’s objects to help understand how they are tied together.

2021

2015

2013

2011

2010

2009

2008