Upgrade to Pro — share decks privately, control downloads, hide ads and more …

So You Think You Know Git?

So You Think You Know Git?

Years ago I used to do talks on advanced Git stuff. For the last decade or so, I've sort of assumed that everyone knew all the advanced command line stuff by now.

However, in the last few months I’ve been back on the speaking circuit, talking about Git and GitButler and I’ve found that lots of people don’t know a lot of stuff about Git.

This talk is a shotgun of stuff you may not know that Git does.

Scott Chacon

February 04, 2024
Tweet

Video

More Decks by Scott Chacon

Other Decks in Programming

Transcript

  1. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  2. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  3. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  4. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  5. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  6. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  7. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  8. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  9. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  10. How Well Do You Know Git? PORCELAIN (82) 44 main

    commands (add, commit, push, pull, …) 11 manipulators (config, reflog, replace, …) 17 interrogators (blame, fsck, rerere, …) 10 interactors (send-email, p4, svn, …) PLUMBING (63) 19 manipulators (apply, commit-tree, update-ref, …) 21 interrogators (cat-file, for-each-ref, …) 5 syncing (fetch-pack, send-pack, …) 18 internal (check-attr, sh-i18n, …) TOTAL: 145
  11. - There are still an average of 9 commits per

    day - ~10k commits in the last 3 years - What has been changing? How Well Do You Know Git?
  12. - There are still an average of 9 commits per

    day - ~10k commits in the last 3 years - What has been changing? How Well Do You Know Git?
  13. - There are still an average of 9 commits per

    day - ~10k commits in the last 3 years - What has been changing? How Well Do You Know Git?
  14. - There are still an average of 9 commits per

    day - ~10k commits in the last 3 years - What has been changing? How Well Do You Know Git?
  15. - There are still an average of 9 commits per

    day - ~10k commits in the last 3 years - What has been changing? How Well Do You Know Git? Git is 5 months old 19 years ago
  16. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  17. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda Shotgun buffet
  18. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda Shotgun buffet blog.gitbutler.com
  19. Some Helpful Con fi g Stuff $ git config -

    - global alias.staash 'stash -- all'
  20. Some Helpful Con fi g Stuff $ git config -

    - global alias.staash 'stash -- all' All ignored and untracked fi les are also stashed and then cleaned up with git clean.
  21. Some Helpful Con fi g Stuff $ git config --

    global alias.bb !better-branch.sh https: // gist.github.com/schacon
  22. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  23. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  24. Oldies But Goodies $ git blame -w -C ignore whitespace

    and detect lines moved or copied in the same commit
  25. Oldies But Goodies $ git blame -w -C -C ignore

    whitespace and detect lines moved or copied in the same commit or the commit that created the fi le
  26. Oldies But Goodies $ git blame -w -C -C -C

    ignore whitespace and detect lines moved or copied in the same commit or the commit that created the fi le or any commit at all
  27. c

  28. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  29. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  30. Some New Stuff You May Not Have Noticed signing commits

    with ssh $ git config gpg.format ssh
  31. Some New Stuff You May Not Have Noticed signing commits

    with ssh $ git config gpg.format ssh $ git config user.signingkey ~/.ssh/key.pub
  32. Some New Stuff You May Not Have Noticed signing commits

    with ssh $ git config gpg.format ssh $ git config user.signingkey ~/.ssh/key.pub $ git commit -S
  33. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  34. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  35. •approximately 3.5M files that results in a Git repo of

    about 300 gigabytes in size. •with 4,000 engineers producing 1,760 daily “lab builds” across 440 branches, plus thousands of pull request validation builds. Big Repo Stuff Windows
  36. •approximately 3.5M files that results in a Git repo of

    about 300 gigabytes in size. •with 4,000 engineers producing 1,760 daily “lab builds” across 440 branches, plus thousands of pull request validation builds. Big Repo Stuff Windows
  37. •approximately 3.5M files that results in a Git repo of

    about 300 gigabytes in size. •with 4,000 engineers producing 1,760 daily “lab builds” across 440 branches, plus thousands of pull request validation builds. Big Repo Stuff Windows
  38. •approximately 3.5M files that results in a Git repo of

    about 300 gigabytes in size. •with 4,000 engineers producing 1,760 daily “lab builds” across 440 branches, plus thousands of pull request validation builds. Big Repo Stuff Windows
  39. Big Repo Stuff ❯ time git clone https: // github.com/torvalds/linux.git

    Cloning into 'linux' .. . remote: Enumerating objects: 9982489, done. remote: Counting objects: 100% (14/14), done. remote: Compressing objects: 100% (12/12), done. remote: Total 9982489 (delta 8), reused 4 (delta 2), pack-reused 9982475 Receiving objects: 100% (9982489/9982489), 4.67 GiB | 4.11 MiB/s, done. Resolving deltas: 100% (8153512/8153512), done. Updating files: 100% (83463/83463), done. real 21m32.198s user 6m27.004s sys 3m10.791s
  40. Big Repo Stuff ❯ time git clone https: // github.com/torvalds/linux.git

    Cloning into 'linux' .. . remote: Enumerating objects: 9982489, done. remote: Counting objects: 100% (14/14), done. remote: Compressing objects: 100% (12/12), done. remote: Total 9982489 (delta 8), reused 4 (delta 2), pack-reused 9982475 Receiving objects: 100% (9982489/9982489), 4.67 GiB | 4.11 MiB/s, done. Resolving deltas: 100% (8153512/8153512), done. Updating files: 100% (83463/83463), done. real 21m32.198s user 6m27.004s sys 3m10.791s
  41. Big Repo Stuff ❯ time git clone - - filter=blob:none

    https: / / github.com/torvalds/linux.git Cloning into 'linux-blobless' .. . remote: Enumerating objects: 7255556, done. remote: Counting objects: 100% (13/13), done. remote: Total 7255556 (delta 8), reused 4 (delta 2), pack-reused 7255543 Receiving objects: 100% (7255556/7255556), 1.41 GiB | 7.10 MiB/s, done. Resolving deltas: 100% (5832826/5832826), done. remote: Enumerating objects: 83004, done. remote: Counting objects: 100% (17980/17980), done. remote: Total 83004 (delta 2074), reused 1359 (delta 1359), pack-reused 65024 Receiving objects: 100% (83004/83004), 243.18 MiB | 13.69 MiB/s, done. Updating files: 100% (83463/83463), done. real 4m46.250s user 1m34.593s sys 1m2.973s
  42. Big Repo Stuff ❯ time git clone - - filter=blob:none

    https: / / github.com/torvalds/linux.git Cloning into 'linux-blobless' .. . remote: Enumerating objects: 7255556, done. remote: Counting objects: 100% (13/13), done. remote: Total 7255556 (delta 8), reused 4 (delta 2), pack-reused 7255543 Receiving objects: 100% (7255556/7255556), 1.41 GiB | 7.10 MiB/s, done. Resolving deltas: 100% (5832826/5832826), done. remote: Enumerating objects: 83004, done. remote: Counting objects: 100% (17980/17980), done. remote: Total 83004 (delta 2074), reused 1359 (delta 1359), pack-reused 65024 Receiving objects: 100% (83004/83004), 243.18 MiB | 13.69 MiB/s, done. Updating files: 100% (83463/83463), done. real 4m46.250s user 1m34.593s sys 1m2.973s Commits and Trees WD Blobs
  43. Big Repo Stuff ❯ time git clone - - filter=tree:0

    https: // github.com/torvalds/linux.git Cloning into 'linux-treeless' . .. remote: Enumerating objects: 1249970, done. remote: Counting objects: 100% (2/2), done. remote: Total 1249970 (delta 0), reused 2 (delta 0), pack-reused 1249968 Receiving objects: 100% (1249970/1249970), 637.40 MiB | 11.69 MiB/s, done. remote: Enumerating objects: 5447, done. remote: Counting objects: 100% (2376/2376), done. remote: Total 5447 (delta 4), reused 2 (delta 2), pack-reused 3071 Receiving objects: 100% (5447/5447), 2.57 MiB | 10.76 MiB/s, done. remote: Enumerating objects: 83004, done. remote: Counting objects: 100% (17984/17984), done. remote: Total 83004 (delta 2052), reused 1336 (delta 1336), pack-reused 65020 Receiving objects: 100% (83004/83004), 243.19 MiB | 10.58 MiB/s, done. Updating files: 100% (83463/83463), done. real 2m2.138s user 0m35.061s sys 0m18.005s
  44. Big Repo Stuff ❯ time git clone - - filter=tree:0

    https: // github.com/torvalds/linux.git Cloning into 'linux-treeless' . .. remote: Enumerating objects: 1249970, done. remote: Counting objects: 100% (2/2), done. remote: Total 1249970 (delta 0), reused 2 (delta 0), pack-reused 1249968 Receiving objects: 100% (1249970/1249970), 637.40 MiB | 11.69 MiB/s, done. remote: Enumerating objects: 5447, done. remote: Counting objects: 100% (2376/2376), done. remote: Total 5447 (delta 4), reused 2 (delta 2), pack-reused 3071 Receiving objects: 100% (5447/5447), 2.57 MiB | 10.76 MiB/s, done. remote: Enumerating objects: 83004, done. remote: Counting objects: 100% (17984/17984), done. remote: Total 83004 (delta 2052), reused 1336 (delta 1336), pack-reused 65020 Receiving objects: 100% (83004/83004), 243.19 MiB | 10.58 MiB/s, done. Updating files: 100% (83463/83463), done. real 2m2.138s user 0m35.061s sys 0m18.005s
  45. Big Repo Stuff ❯ time git clone - - filter=tree:0

    https: // github.com/torvalds/linux.git Cloning into 'linux-treeless' . .. remote: Enumerating objects: 1249970, done. remote: Counting objects: 100% (2/2), done. remote: Total 1249970 (delta 0), reused 2 (delta 0), pack-reused 1249968 Receiving objects: 100% (1249970/1249970), 637.40 MiB | 11.69 MiB/s, done. remote: Enumerating objects: 5447, done. remote: Counting objects: 100% (2376/2376), done. remote: Total 5447 (delta 4), reused 2 (delta 2), pack-reused 3071 Receiving objects: 100% (5447/5447), 2.57 MiB | 10.76 MiB/s, done. remote: Enumerating objects: 83004, done. remote: Counting objects: 100% (17984/17984), done. remote: Total 83004 (delta 2052), reused 1336 (delta 1336), pack-reused 65020 Receiving objects: 100% (83004/83004), 243.19 MiB | 10.58 MiB/s, done. Updating files: 100% (83463/83463), done. real 2m2.138s user 0m35.061s sys 0m18.005s Commits WD Trees WD Blobs
  46. Big Repo Stuff ❯ time git blame lib/bootconfig.c remote: Enumerating

    objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.62 KiB | 2.81 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 2.98 MiB/s, done. remote: Enumerating objects: 1, done.
  47. Big Repo Stuff ❯ time git blame lib/bootconfig.c remote: Enumerating

    objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.62 KiB | 2.81 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 2.98 MiB/s, done. remote: Enumerating objects: 1, done.
  48. Big Repo Stuff ❯ time git blame lib/bootconfig.c remote: Enumerating

    objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.62 KiB | 2.81 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 2.98 MiB/s, done. remote: Enumerating objects: 1, done.
  49. Big Repo Stuff ❯ time git blame lib/bootconfig.c remote: Enumerating

    objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 1.98 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.62 KiB | 2.81 MiB/s, done. remote: Enumerating objects: 1, done. remote: Counting objects: 100% (1/1), done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Receiving objects: 100% (1/1), 5.95 KiB | 2.98 MiB/s, done. remote: Enumerating objects: 1, done.
  50. Big Repo Stuff linux ❯ time git blame lib/nlattr.c >/dev/null

    2>/dev/null real 0m4.592s user 0m1.241s sys 0m0.501s linux-blobless ❯ time git blame lib/nlattr.c >/dev/null 2>/dev/null real 0m45.873s user 0m4.550s sys 0m3.209s
  51. Big Repo Stuff multipack indexes and reachability bitmaps and geometric

    repacking https: / / github.blog/2021-04-29-scaling-monorepo-maintenance/
  52. ❯ time git status On branch main Your branch is

    up to date with 'origin/main'. nothing to commit, working tree clean real 0m5.931s ❯ git sparse-checkout set build base ❯ time git status On branch main Your branch is up to date with 'origin/main'. You are in a sparse checkout with 2% of tracked files present. nothing to commit, working tree clean real 0m0.386s
  53. ❯ time git status On branch main Your branch is

    up to date with 'origin/main'. nothing to commit, working tree clean real 0m5.931s ❯ git sparse-checkout set build base ❯ time git status On branch main Your branch is up to date with 'origin/main'. You are in a sparse checkout with 2% of tracked files present. nothing to commit, working tree clean real 0m0.386s
  54. ❯ time git status On branch main Your branch is

    up to date with 'origin/main'. nothing to commit, working tree clean real 0m5.931s ❯ git sparse-checkout set build base ❯ time git status On branch main Your branch is up to date with 'origin/main'. You are in a sparse checkout with 2% of tracked files present. nothing to commit, working tree clean real 0m0.386s
  55. ❯ time git status On branch main Your branch is

    up to date with 'origin/main'. nothing to commit, working tree clean real 0m5.931s ❯ git sparse-checkout set build base ❯ time git status On branch main Your branch is up to date with 'origin/main'. You are in a sparse checkout with 2% of tracked files present. nothing to commit, working tree clean real 0m0.386s
  56. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  57. - Some helpful config stuff - Oldies but goodies -

    Some new stuff you may not have noticed - Some big repo / monorepo stuff - Some new GitHub stuff Our Agenda
  58. $ git ls-remote 593c09ffa229592be6247338a39cce09085aaee6 refs/heads/inertia 95ac6279f06baa7535e2d084df05cf9d0065e64b refs/heads/master ad8b29eeb8ff141cb06b2819d277bedd3aa358a9 refs/heads/new-vector-cl e37d20595e0c55fd4ab1b28e6ad195100dacd42c

    refs/heads/remote-vector dc29ff8048689b25a5384a567a7b70264ebc63f9 refs/pull/220/head 99daa15a96073549e11d4fe5a1ee3ef27e95e199 refs/pull/221/head 3a171b4261728292805160fca87e2c901b3e9110 refs/pull/222/head 59e4fa4373be1b062fcd01c559ffcbfac73a7900 refs/pull/223/head 6358f1136de48bf22f244a60429502b85b8553b1 refs/pull/223/merge ec54ea7fcd11d820b6df61f63a3d6c0215db0128 refs/pull/224/head 9af6be7cb29806c788f8ee1c757696671cda8727 refs/pull/225/head 93ef792cde39c7c79d4fcda099321edc872369c4 refs/pull/226/head 97f570af65aa72677b278b3e0c5a5d3c0efdc04a refs/pull/227/head 340a38f8e140c2379b2d51507939dda9a7c88911 refs/pull/227/merge 27300a34fb5276f2ac92d90429bce8d0c6a679ef refs/pull/228/head
  59. $ git ls-remote 593c09ffa229592be6247338a39cce09085aaee6 refs/heads/inertia 95ac6279f06baa7535e2d084df05cf9d0065e64b refs/heads/master ad8b29eeb8ff141cb06b2819d277bedd3aa358a9 refs/heads/new-vector-cl e37d20595e0c55fd4ab1b28e6ad195100dacd42c

    refs/heads/remote-vector dc29ff8048689b25a5384a567a7b70264ebc63f9 refs/pull/220/head 99daa15a96073549e11d4fe5a1ee3ef27e95e199 refs/pull/221/head 3a171b4261728292805160fca87e2c901b3e9110 refs/pull/222/head 59e4fa4373be1b062fcd01c559ffcbfac73a7900 refs/pull/223/head 6358f1136de48bf22f244a60429502b85b8553b1 refs/pull/223/merge ec54ea7fcd11d820b6df61f63a3d6c0215db0128 refs/pull/224/head 9af6be7cb29806c788f8ee1c757696671cda8727 refs/pull/225/head 93ef792cde39c7c79d4fcda099321edc872369c4 refs/pull/226/head 97f570af65aa72677b278b3e0c5a5d3c0efdc04a refs/pull/227/head 340a38f8e140c2379b2d51507939dda9a7c88911 refs/pull/227/merge 27300a34fb5276f2ac92d90429bce8d0c6a679ef refs/pull/228/head
  60. $ git ls-remote 593c09ffa229592be6247338a39cce09085aaee6 refs/heads/inertia 95ac6279f06baa7535e2d084df05cf9d0065e64b refs/heads/master ad8b29eeb8ff141cb06b2819d277bedd3aa358a9 refs/heads/new-vector-cl e37d20595e0c55fd4ab1b28e6ad195100dacd42c

    refs/heads/remote-vector dc29ff8048689b25a5384a567a7b70264ebc63f9 refs/pull/220/head 99daa15a96073549e11d4fe5a1ee3ef27e95e199 refs/pull/221/head 3a171b4261728292805160fca87e2c901b3e9110 refs/pull/222/head 59e4fa4373be1b062fcd01c559ffcbfac73a7900 refs/pull/223/head 6358f1136de48bf22f244a60429502b85b8553b1 refs/pull/223/merge ec54ea7fcd11d820b6df61f63a3d6c0215db0128 refs/pull/224/head 9af6be7cb29806c788f8ee1c757696671cda8727 refs/pull/225/head 93ef792cde39c7c79d4fcda099321edc872369c4 refs/pull/226/head 97f570af65aa72677b278b3e0c5a5d3c0efdc04a refs/pull/227/head 340a38f8e140c2379b2d51507939dda9a7c88911 refs/pull/227/merge 27300a34fb5276f2ac92d90429bce8d0c6a679ef refs/pull/228/head
  61. $ git ls-remote 593c09ffa229592be6247338a39cce09085aaee6 refs/heads/inertia 95ac6279f06baa7535e2d084df05cf9d0065e64b refs/heads/master ad8b29eeb8ff141cb06b2819d277bedd3aa358a9 refs/heads/new-vector-cl e37d20595e0c55fd4ab1b28e6ad195100dacd42c

    refs/heads/remote-vector dc29ff8048689b25a5384a567a7b70264ebc63f9 refs/pull/220/head 99daa15a96073549e11d4fe5a1ee3ef27e95e199 refs/pull/221/head 3a171b4261728292805160fca87e2c901b3e9110 refs/pull/222/head 59e4fa4373be1b062fcd01c559ffcbfac73a7900 refs/pull/223/head 6358f1136de48bf22f244a60429502b85b8553b1 refs/pull/223/merge ec54ea7fcd11d820b6df61f63a3d6c0215db0128 refs/pull/224/head 9af6be7cb29806c788f8ee1c757696671cda8727 refs/pull/225/head 93ef792cde39c7c79d4fcda099321edc872369c4 refs/pull/226/head 97f570af65aa72677b278b3e0c5a5d3c0efdc04a refs/pull/227/head 340a38f8e140c2379b2d51507939dda9a7c88911 refs/pull/227/merge 27300a34fb5276f2ac92d90429bce8d0c6a679ef refs/pull/228/head
  62. ❯ git config remote.origin.fetch '+refs/pull /* :refs/remotes/origin/pull / * '

    ❯ git fetch remote: Enumerating objects: 23, done. remote: Counting objects: 100% (23/23), done. remote: Compressing objects: 100% (12/12), done. remote: Total 23 (delta 12), reused 16 (delta 11), pack-reused 0 Unpacking objects: 100% (23/23), 11.47 KiB | 1.04 MiB/s, done. From github.com:gitbutlerapp/web * [new ref] refs/pull/100/head - > origin/pull/100/head * [new ref] refs/pull/101/head - > origin/pull/101/head * [new ref] refs/pull/102/head - > origin/pull/102/head * [new ref] refs/pull/103/head - > origin/pull/103/head * [new ref] refs/pull/104/head - > origin/pull/104/head * [new ref] refs/pull/105/head - > origin/pull/105/head * [new ref] refs/pull/106/head - > origin/pull/106/head * [new ref] refs/pull/107/head - > origin/pull/107/head * [new ref] refs/pull/108/head - > origin/pull/108/head * [new ref] refs/pull/109/head - > origin/pull/109/head
  63. ❯ git config remote.origin.fetch '+refs/pull /* :refs/remotes/origin/pull / * '

    ❯ git fetch remote: Enumerating objects: 23, done. remote: Counting objects: 100% (23/23), done. remote: Compressing objects: 100% (12/12), done. remote: Total 23 (delta 12), reused 16 (delta 11), pack-reused 0 Unpacking objects: 100% (23/23), 11.47 KiB | 1.04 MiB/s, done. From github.com:gitbutlerapp/web * [new ref] refs/pull/100/head - > origin/pull/100/head * [new ref] refs/pull/101/head - > origin/pull/101/head * [new ref] refs/pull/102/head - > origin/pull/102/head * [new ref] refs/pull/103/head - > origin/pull/103/head * [new ref] refs/pull/104/head - > origin/pull/104/head * [new ref] refs/pull/105/head - > origin/pull/105/head * [new ref] refs/pull/106/head - > origin/pull/106/head * [new ref] refs/pull/107/head - > origin/pull/107/head * [new ref] refs/pull/108/head - > origin/pull/108/head * [new ref] refs/pull/109/head - > origin/pull/109/head
  64. ❯ git config remote.origin.fetch '+refs/pull /* :refs/remotes/origin/pull / * '

    ❯ git fetch remote: Enumerating objects: 23, done. remote: Counting objects: 100% (23/23), done. remote: Compressing objects: 100% (12/12), done. remote: Total 23 (delta 12), reused 16 (delta 11), pack-reused 0 Unpacking objects: 100% (23/23), 11.47 KiB | 1.04 MiB/s, done. From github.com:gitbutlerapp/web * [new ref] refs/pull/100/head - > origin/pull/100/head * [new ref] refs/pull/101/head - > origin/pull/101/head * [new ref] refs/pull/102/head - > origin/pull/102/head * [new ref] refs/pull/103/head - > origin/pull/103/head * [new ref] refs/pull/104/head - > origin/pull/104/head * [new ref] refs/pull/105/head - > origin/pull/105/head * [new ref] refs/pull/106/head - > origin/pull/106/head * [new ref] refs/pull/107/head - > origin/pull/107/head * [new ref] refs/pull/108/head - > origin/pull/108/head * [new ref] refs/pull/109/head - > origin/pull/109/head
  65. Thank you! Be sure to let us buy you a

    beer at our drinkup tonight! Le Waff, 6p
  66. ?????? Be sure to let us buy you a beer

    at our drinkup tonight! Le Waff, 6p
  67. Any Questions? Be sure to let us buy you a

    beer at our drinkup tonight! Le Waff, 6p