Git Rebase

Git Rebase

Git is the dominant tool for version management. Misunderstanding and misusing Git can cost development teams time, energy, and money. Few better examples exist than Git's default merge workflow which creates repositories that are hard to read, debug, and maintain. In this talk, I'll show how to use the Rebase Workflow instead, which puts Git to work for you to produce quality code that's easy to handle and kicks your team into high productivity.

E0e036f89c14b3e59640318eedf9670b?s=128

Brooke Kuhlmann

June 28, 2020
Tweet

Transcript

  1. 22.
  2. 23.
  3. 24.
  4. 46.
  5. 47.

    git pull Merge Workflow git switch --create example git commit

    ... Synchronize: 1⃣ 2⃣ Work: --track
  6. 48.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  7. 49.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master git pull Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  8. 50.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master git pull git switch example Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  9. 51.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master git pull git switch example git pull origin master Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  10. 52.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master git pull git switch example git pull origin master git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  11. 53.

    git pull Merge Workflow git switch --create example git commit

    ... git switch master git pull git switch example git pull origin master git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  12. 54.

    git pull Rebase Workflow git switch --create example --track git

    commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  13. 55.

    git pull Rebase Workflow git switch --create example --track git

    commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  14. 56.

    git pull Rebase Workflow git switch --create example --track git

    commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  15. 57.

    git fetch --prune Rebase Workflow git switch --create example --track

    git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  16. 58.

    git fetch --prune Rebase Workflow git switch --create example --track

    git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --prune origin master
  17. 59.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  18. 60.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase origin master
  19. 61.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  20. 62.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin master
  21. 63.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase origin master
  22. 64.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase origin master
  23. 65.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase --rebase origin master
  24. 66.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --force-with-lease --rebase --rebase origin master
  25. 67.

    git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git switch master git pull git switch example git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase --force-with-lease --rebase origin master
  26. 71.

    [pull] rebase = true Git Configuration (Pull) git pull --rebase

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  27. 72.

    [pull] rebase = true Git Configuration (Pull) git pull --rebase

    ✅ git pull ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  28. 73.

    [pull] rebase = true Git Configuration (Pull) git config --global

    pull.rebase true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  29. 76.

    [pull] rebase = merges Git Configuration (Pull) ~/.gitconfig: Git 2.22.0

    (or higher) https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  30. 78.

    [fetch] prune = true Git Configuration (Fetch) git fetch --prune

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  31. 79.

    [fetch] prune = true Git Configuration (Fetch) git fetch --prune

    ✅ git fetch ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  32. 80.

    [fetch] prune = true Git Configuration (Fetch) git config --global

    fetch.prune true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  33. 85.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
  34. 86.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
  35. 87.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
  36. 88.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
  37. 89.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick <commit> = use commit # r, reword <commit> = use commit, but edit the commit message # e, edit <commit> = use commit, but stop for amending # s, squash <commit> = use commit, but meld into previous commit # f, fixup <commit> = like "squash", but discard this commit's log message # x, exec <command> = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop <commit> = remove commit # l, label <label> = label current HEAD with a name # t, reset <label> = reset HEAD to a label # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
  38. 100.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's message # x, exec = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop = remove commit
  39. 101.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's message # x, exec = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop = remove commit
  40. 102.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's message # x, exec = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop = remove commit
  41. 103.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. # Rebase 317ef2c2c735 onto f0c2847c9444 (2 commands) # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's message # x, exec = run command (the rest of the line) using shell # b, break = stop here (continue rebase later with 'git rebase --continue') # d, drop = remove commit
  42. 106.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_pick
  43. 107.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_pick
  44. 108.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_pick
  45. 109.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_pick
  46. 110.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_pick
  47. 111.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. pick 317ef2c2c735 Fixed JSON schema. pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8 Added documentation. https://www.alchemists.io/screencasts/git_rebase_pick
  48. 114.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_reword
  49. 115.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_reword
  50. 116.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. reword f7a6ea7f46b8

    Added documentation. pick 317ef2c2c735 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_reword
  51. 117.

    Git Rebase Editor Added documentation. Provides improved navigation within the

    README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_reword
  52. 118.

    Git Rebase Editor Added documentation. Provides improved navigation within the

    README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_reword
  53. 119.

    Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_reword
  54. 120.

    Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. Added table of contents to the README. https://www.alchemists.io/screencasts/git_rebase_reword
  55. 121.

    Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. Added table of contents to the README. https://www.alchemists.io/screencasts/git_rebase_reword
  56. 122.

    Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. What Added table of contents to the README. https://www.alchemists.io/screencasts/git_rebase_reword
  57. 123.

    Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. What Why Added table of contents to the README. https://www.alchemists.io/screencasts/git_rebase_reword
  58. 125.

    Git Rebase CLI 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_rebase_reword
  59. 126.

    Git Rebase CLI 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_rebase_reword
  60. 129.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_edit
  61. 130.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_edit
  62. 131.

    Git Rebase Editor edit 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_edit
  63. 134.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_squash
  64. 135.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_squash
  65. 136.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. squash 7eac5b44a5c0

    Added table of contents to the README. squash 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_squash
  66. 137.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. Fixed JSON schema. Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash
  67. 138.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. Fixed JSON schema. Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash
  68. 139.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. Fixed JSON schema. Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash
  69. 140.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. Fixed JSON schema. Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash
  70. 141.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  71. 142.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  72. 143.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Added table of contents to the README. Provides improved navigation within the README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  73. 144.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Provides improved navigation within the README. This was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  74. 145.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Provides improved navigation within the README. This was autogenerated using `tocer --generate`. ✅ https://www.alchemists.io/screencasts/git_rebase_squash
  75. 146.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Provides improved navigation within the README. This was autogenerated using `tocer --generate`. ✅ https://www.alchemists.io/screencasts/git_rebase_squash
  76. 147.

    Git Rebase Editor Added initial implementation. First initial working implementation.

    Provides improved navigation within the README. This was autogenerated using `tocer --generate`. ✅ https://www.alchemists.io/screencasts/git_rebase_squash
  77. 149.

    Git Rebase Editor Added initial implementation. First initial working implementation

    with README autogenerated with `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  78. 150.

    Git Rebase Editor Added initial implementation. First initial working implementation

    with README autogenerated with `tocer --generate`. ✅ https://www.alchemists.io/screencasts/git_rebase_squash
  79. 154.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_fixup
  80. 155.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_fixup
  81. 156.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_fixup
  82. 157.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. fixup 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_fixup
  83. 158.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. fixup 217c2803c799

    Fixed JSON schema. pick 7eac5b44a5c0 Added table of contents to the README. ✅ https://www.alchemists.io/screencasts/git_rebase_fixup
  84. 160.

    Git Rebase CLI 657a933f46f5 Added initial implementation. 4809b7a53f05 Added table

    of contents to the README. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_rebase_fixup
  85. 163.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_exec
  86. 164.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_exec
  87. 165.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. exec printf "%s\n" "This is an example script." pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_exec
  88. 168.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_break
  89. 169.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_break
  90. 170.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. break pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_break
  91. 173.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_drop
  92. 174.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_drop
  93. 175.

    Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation. drop 7eac5b44a5c0

    Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_rebase_drop
  94. 177.

    Git Rebase CLI 2dc5e2e29e22 Added initial implementation. d39847560845 Fixed JSON

    schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_rebase_drop
  95. 182.

    Git Rebase Resolution git rebase --abort git rebase --continue git

    rebase --skip git rebase --show-current-patch
  96. 186.

    Git Commit (fixup) 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_commit_fixup
  97. 187.

    Git Commit (fixup) git commit --fixup 2dc5e2e29e22 2dc5e2e29e22 Added initial

    implementation. 7eac5b44a5c0 Added table of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_commit_fixup
  98. 188.

    Git Commit (fixup) git commit --fixup 2dc5e2e29e22 2dc5e2e29e22 Added initial

    implementation. 7eac5b44a5c0 Added table of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" git commit --fixup 7eac5b44a5c0 https://www.alchemists.io/screencasts/git_commit_fixup
  99. 190.

    Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation. fixup! Added

    initial implementation. pick 7eac5b44a5c0 Added table of contents to the README. fixup! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_fixup
  100. 191.

    Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation. fixup! Added

    initial implementation. pick 7eac5b44a5c0 Added table of contents to the README. fixup! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_fixup
  101. 192.

    Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation. fixup! Added

    initial implementation. pick 7eac5b44a5c0 Added table of contents to the README. fixup! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_fixup
  102. 193.

    Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation. fixup! Added

    initial implementation. pick 7eac5b44a5c0 Added table of contents to the README. fixup! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_fixup
  103. 195.

    Git Commit (fixup) ca5a69955876 Added initial implementation. 3226a5547e49 Added table

    of contents to the README. 8450b65fc5ec Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_commit_fixup
  104. 198.

    Git Commit (squash) 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" https://www.alchemists.io/screencasts/git_commit_squash
  105. 199.

    Git Commit (squash) 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" git commit --squash 7eac5b44a5c0 https://www.alchemists.io/screencasts/git_commit_squash
  106. 200.

    Git Commit (squash) 2dc5e2e29e22 Added initial implementation. 7eac5b44a5c0 Added table

    of contents to the README. 217c2803c799 Fixed JSON schema. git log --pretty=format:"%h %s" git commit --squash 7eac5b44a5c0 https://www.alchemists.io/screencasts/git_commit_squash
  107. 201.

    Git Commit (squash) pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. squash! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_squash
  108. 202.

    Git Commit (squash) pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. squash! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_squash
  109. 203.

    Git Commit (squash) pick 2dc5e2e29e22 Added initial implementation. pick 7eac5b44a5c0

    Added table of contents to the README. squash! Added table of contents to the README. pick 217c2803c799 Fixed JSON schema. https://www.alchemists.io/screencasts/git_commit_squash
  110. 209.

    [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  111. 210.

    [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  112. 211.

    [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  113. 212.

    [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  114. 213.

    [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) git config --global rebase.abbreviateCommands true git config --global rebase.autoSquash true git config --global rebase.autoStash true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  115. 214.

    [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  116. 215.

    [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  117. 216.

    [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  118. 217.

    [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    git config --global rerere.enabled true git config --global rerere.autoUpdate true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/master/home_files/.gitconfig.tt
  119. 220.

    Added initial implementation Provides the initial foundation from which to

    work on additional features. Git Lint Example Commit https://www.alchemists.io/projects/git-lint
  120. 221.

    Added initial implementation Provides the initial foundation from which to

    work on additional features. Git Lint Example Commit https://www.alchemists.io/projects/git-lint
  121. 222.

    Added initial implementation Provides the initial foundation from which to

    work on additional features. Git Lint Example Commit https://www.alchemists.io/projects/git-lint
  122. 223.

    Added initial implementation Provides the initial foundation from which to

    work on additional features. Git Lint Example Commit https://www.alchemists.io/projects/git-lint
  123. 224.

    Added initial implementation Provides the initial foundation from which to

    work on additional features. Git Lint Example Commit https://www.alchemists.io/projects/git-lint
  124. 226.

    gem install git-lint Git Lint cd <project> git checkout <branch>

    git-lint --analyze Installation: Usage: https://www.alchemists.io/projects/git-lint
  125. 227.
  126. 228.
  127. 229.
  128. 231.

    Next Steps • Practice the Git Rebase Workflow each day.

    • Add aliases/functions to your Dotfiles.
  129. 232.

    Next Steps • Practice the Git Rebase Workflow each day.

    • Add aliases/functions to your Dotfiles. • Add Git Lint to all projects!