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

Git Rebase

Git Rebase

Git is the dominant tool for source code 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 leverage the Rebase Workflow to produce quality code that's communicative and empowering to your team.

E0e036f89c14b3e59640318eedf9670b?s=128

Brooke Kuhlmann

June 27, 2021
Tweet

Transcript

  1. Git Rebase Presented by Brooke Kuhlmann

  2. Git Rebase Key Benefits https://www.alchemists.io/articles/git_commit_anatomy

  3. 📏 Linear 📖 Readable 🐞 Debuggable Git Rebase https://www.alchemists.io/articles/git_commit_anatomy

  4. A Brief Review

  5. A Brief Review

  6. Merge versus Rebase

  7. Merge versus Rebase

  8. Merge versus Rebase

  9. Merge versus Rebase

  10. Merge versus Rebase

  11. Merge versus Rebase

  12. Merge versus Rebase

  13. Merge "Join two or more development histories together." https://git-scm.com/docs/git-merge

  14. Merge "Join two or more development histories together." https://git-scm.com/docs/git-merge

  15. Merge "Join two or more development histories together." https://git-scm.com/docs/git-merge

  16. Merge Example (semi-linear)

  17. Merge Example (semi-linear)

  18. Merge Example (non-linear)

  19. Merge Example (non-linear)

  20. None
  21. None
  22. 🚫

  23. Git Log - Quick Tip

  24. Git Log - Quick Tip 💡

  25. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) https://www.alchemists.io/projects/dotfiles

  26. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) ⭐ https://www.alchemists.io/projects/dotfiles

  27. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %C(yellow) Yellow

    https://www.alchemists.io/projects/dotfiles
  28. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %h SHA

    https://www.alchemists.io/projects/dotfiles
  29. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %C(reset) Color

    Reset https://www.alchemists.io/projects/dotfiles
  30. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %C(green) Green

    https://www.alchemists.io/projects/dotfiles
  31. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %cr Committer

    Date https://www.alchemists.io/projects/dotfiles
  32. git log --graph --pretty=format:"%C(yellow)%h%C(reset) %C(green)%cr.%C(reset)" Git Log (graph) %C(reset) Color

    Reset https://www.alchemists.io/projects/dotfiles
  33. Rebase "Reapply commits on top of another base tip." https://git-scm.com/docs/git-rebase

  34. Rebase "Reapply commits on top of another base tip." https://git-scm.com/docs/git-rebase

  35. Rebase Onto master Branch https://www.atlassian.com/blog/git/simple-git-workflow-is-simple

  36. Rebase Onto master Branch https://www.atlassian.com/blog/git/simple-git-workflow-is-simple

  37. Rebase Onto feature Branch https://www.atlassian.com/blog/git/simple-git-workflow-is-simple

  38. Rebase Onto feature Branch https://www.atlassian.com/blog/git/simple-git-workflow-is-simple

  39. Rebase Example

  40. Rebase Example

  41. git pull Merge Workflow Synchronize: 1⃣

  42. git pull Merge Workflow Synchronize: 1⃣ git fetch && git

    merge 💡
  43. git pull Merge Workflow git switch --create example Synchronize: 1⃣

    2⃣ Work:
  44. git pull Merge Workflow git switch --create example Synchronize: 1⃣

    2⃣ Work: --create branch
  45. git pull Merge Workflow git switch --create example Synchronize: 1⃣

    2⃣ Work: --track 💡
  46. git pull Merge Workflow git switch --create example git commit

    Synchronize: 1⃣ 2⃣ Work: --track
  47. git pull Merge Workflow git switch --create example git commit

    ... Synchronize: 1⃣ 2⃣ Work: --track
  48. git pull Merge Workflow git switch --create example git commit

    ... git pull origin main Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  49. git pull Merge Workflow git switch --create example git commit

    ... git pull origin main git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  50. git pull Merge Workflow git switch --create example git commit

    ... git pull origin main git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --track
  51. git pull Rebase Workflow git switch --create example --track git

    commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  52. git pull Rebase Workflow git switch --create example --track git

    commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  53. git pull Rebase Workflow git switch --create example --track git

    commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  54. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  55. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: 💡 origin main
  56. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: 🎉 origin main
  57. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  58. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  59. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  60. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: origin main
  61. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --rebase origin main
  62. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --force-with-lease --force-if-includes --rebase origin main
  63. git fetch --prune git pull --rebase Rebase Workflow git switch

    --create example --track git commit ... git pull git push Synchronize: 1⃣ 2⃣ 3⃣ Push: Work: --force-with-lease --force-if-includes 💡 --rebase origin main
  64. Git Configuration - Quick Tips https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  65. Git Configuration - Quick Tips 💡 https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  66. [pull] rebase = true Git Configuration (Pull) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  67. [pull] rebase = true Git Configuration (Pull) 🚫 git pull

    --rebase ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  68. [pull] rebase = true Git Configuration (Pull) 🚫 git pull

    --rebase ✅ git pull ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  69. [pull] rebase = true Git Configuration (Pull) git config --global

    pull.rebase true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  70. [pull] rebase = merges Git Configuration (Pull) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

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

    2.22.0 (or higher) https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  72. [fetch] prune = true Git Configuration (Fetch) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  73. [fetch] prune = true Git Configuration (Fetch) 🚫 git fetch

    --prune ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  74. [fetch] prune = true Git Configuration (Fetch) 🚫 git fetch

    --prune ✅ git fetch ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  75. [fetch] prune = true Git Configuration (Fetch) git config --global

    fetch.prune true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  76. [push] useForceIfIncludes = true Git Configuration (Push) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  77. [push] useForceIfIncludes = true Git Configuration (Push) ~/.gitconfig: 💡 Git

    2.30.0 (or higher) https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  78. [push] useForceIfIncludes = true Git Configuration (Push) 🚫 git push

    --force-with-lease --force-if-includes ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  79. [push] useForceIfIncludes = true Git Configuration (Push) 🚫 git push

    --force-with-lease --force-if-includes ✅ git push --force-with-lease ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  80. [push] useForceIfIncludes = true Git Configuration (Push) git config --global

    push.useForceIfIncludes true ~/.gitconfig: Command Line Interface (CLI): https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  81. Git Interactive Rebase

  82. Git Interactive Rebase 🎉

  83. Git Rebase CLI git rebase --interactive main (standard)

  84. Git Rebase CLI git rebase --interactive main (standard) 💡 -i

  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>]
  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>]
  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>]
  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>]
  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>] 🚫 🚫 🚫
  90. git rebase --interactive @~<number> (number) Git Rebase CLI

  91. git rebase --interactive @~<number> (number) HEAD Git Rebase CLI

  92. (branch) git rebase --interactive <branch> Git Rebase CLI

  93. (tag) git rebase --interactive <tag> Git Rebase CLI

  94. (SHA) git rebase --interactive <SHA> Git Rebase CLI

  95. (upstream) git rebase --interactive @{upstream} Git Rebase CLI

  96. (root) git rebase --interactive --root Git Rebase CLI

  97. (root) git rebase --interactive --root ⚠ Git Rebase CLI

  98. 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
  99. 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
  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
  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
  102. Git Rebase https://www.alchemists.io/screencasts/git_rebase_pick

  103. Git Rebase Pick https://www.alchemists.io/screencasts/git_rebase_pick

  104. 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
  105. 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
  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
  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
  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
  109. 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
  110. Git Rebase https://www.alchemists.io/screencasts/git_rebase_reword

  111. Git Rebase Reword https://www.alchemists.io/screencasts/git_rebase_reword

  112. 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
  113. 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
  114. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation f7a6ea7f46b8 Added

    documentation pick 317ef2c2c735 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_reword
  115. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation f7a6ea7f46b8 Added

    documentation pick 317ef2c2c735 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_reword reword
  116. 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
  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
  118. Git Rebase Editor Provides improved navigation within the README. This

    was autogenerated using `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_reword
  119. 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
  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
  121. 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
  122. 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
  123. Git Rebase CLI https://www.alchemists.io/screencasts/git_rebase_reword

  124. 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
  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
  126. Git Rebase https://www.alchemists.io/screencasts/git_rebase_edit

  127. Git Rebase Edit https://www.alchemists.io/screencasts/git_rebase_edit

  128. 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
  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
  130. Git Rebase Editor 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
  131. Git Rebase Editor 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 edit
  132. Git Rebase https://www.alchemists.io/screencasts/git_rebase_squash

  133. Git Rebase Squash https://www.alchemists.io/screencasts/git_rebase_squash

  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
  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
  136. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation 7eac5b44a5c0 Added

    table of contents to the README 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_squash
  137. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation 7eac5b44a5c0 Added

    table of contents to the README 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_squash squash squash
  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
  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 🤢
  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
  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`. Fixed JSON schema Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash Subject Subject Subject
  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`. Fixed JSON schema Corrects a typo in the original implementation which caused the builds to fail. https://www.alchemists.io/screencasts/git_rebase_squash Body Body Body
  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`. Fixed JSON schema Corrects a typo in the original implementation which caused the builds to fail. 🚫 https://www.alchemists.io/screencasts/git_rebase_squash
  144. 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
  145. 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
  146. 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
  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
  148. 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
  149. 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
  150. 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
  151. Git Rebase Editor Added initial implementation https://www.alchemists.io/screencasts/git_rebase_squash

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

    with README autogenerated with `tocer --generate`. https://www.alchemists.io/screencasts/git_rebase_squash
  153. Git Rebase Editor Added initial implementation First initial working implementation

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

  155. Git Rebase Fixup https://www.alchemists.io/screencasts/git_rebase_fixup

  156. Git Rebase Fixup ⭐ ⭐ ⭐ ⭐ https://www.alchemists.io/screencasts/git_rebase_fixup

  157. 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
  158. 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
  159. 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
  160. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation pick 7eac5b44a5c0

    Added table of contents to the README 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_fixup
  161. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation pick 7eac5b44a5c0

    Added table of contents to the README 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_fixup fixup
  162. 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
  163. 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
  164. 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
  165. Git Rebase CLI https://www.alchemists.io/screencasts/git_rebase_fixup

  166. 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
  167. Git Rebase https://www.alchemists.io/screencasts/git_rebase_exec

  168. Git Rebase Exec https://www.alchemists.io/screencasts/git_rebase_exec

  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_exec
  170. 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
  171. 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
  172. 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
  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_exec exec printf "%s\n" "This is an example script."
  174. Git Rebase CLI |> This is an example script. https://www.alchemists.io/screencasts/git_rebase_exec

  175. Git Rebase https://www.alchemists.io/screencasts/git_rebase_break

  176. Git Rebase Break https://www.alchemists.io/screencasts/git_rebase_break

  177. 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
  178. 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
  179. 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
  180. 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 break
  181. Git Rebase https://www.alchemists.io/screencasts/git_rebase_drop

  182. Git Rebase Drop https://www.alchemists.io/screencasts/git_rebase_drop

  183. 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
  184. 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
  185. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation 7eac5b44a5c0 Added

    table of contents to the README pick 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_drop
  186. Git Rebase Editor pick 2dc5e2e29e22 Added initial implementation 7eac5b44a5c0 Added

    table of contents to the README pick 217c2803c799 Fixed JSON schema https://www.alchemists.io/screencasts/git_rebase_drop drop
  187. Git Rebase CLI https://www.alchemists.io/screencasts/git_rebase_drop

  188. 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
  189. Git Rebase Resolution 🛠

  190. Git Rebase Resolution git rebase --abort

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

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

    rebase --skip
  193. Git Rebase Resolution git rebase --abort git rebase --continue git

    rebase --skip git rebase --show-current-patch
  194. Git Commit (fixup) git commit --fixup <sha> https://www.alchemists.io/screencasts/git_commit_fixup

  195. Git Commit (fixup) git commit --fixup <sha> ⭐ https://www.alchemists.io/screencasts/git_commit_fixup

  196. Git Commit (fixup) https://www.alchemists.io/screencasts/git_commit_fixup

  197. 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
  198. 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
  199. 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
  200. Git Commit (fixup) git rebase --interactive main https://www.alchemists.io/screencasts/git_commit_fixup

  201. 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
  202. 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
  203. 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
  204. 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
  205. Git Commit (fixup) https://www.alchemists.io/screencasts/git_commit_fixup

  206. 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
  207. Git Commit (fixup)

  208. Git Commit (fixup) 💡Git 2.32.0 (or higher)

  209. Git Commit (fixup) git commit --fixup=amend:<sha> 💡Git 2.32.0 (or higher)

  210. Git Commit (fixup) git commit --fixup=amend:<sha> 💡Git 2.32.0 (or higher)

    git commit --fixup=reword:<sha>
  211. Git Commit (fixup)

  212. 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"
  213. Git Commit (fixup) git commit --fixup=amend:2dc5e2e29e22 2dc5e2e29e22 Added initial implementation

    7eac5b44a5c0 Added table of contents to the README 217c2803c799 Fixed JSON schema git log --pretty=format:"%h %s"
  214. Git Commit (fixup) git commit --fixup=amend: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=reword:7eac5b44a5c0
  215. Git Commit (fixup)

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

    of contents to the README 217c2803c799 Fixed JSON schema 1e920026b099 amend! Added initial implementation 8239288c5aaf amend! Added table of contents to the README git log --pretty=format:"%h %s"
  217. Git Commit (fixup) 2dc5e2e29e22 Added initial implementation 7eac5b44a5c0 Added table

    of contents to the README 217c2803c799 Fixed JSON schema 1e920026b099 amend! Added initial implementation 8239288c5aaf amend! Added table of contents to the README git log --pretty=format:"%h %s"
  218. Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation fixup -C

    Added initial implementation pick 7eac5b44a5c0 Added table of contents to the README fixup -C Added table of contents to the README pick 217c2803c799 Fixed JSON schema
  219. Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation fixup -C

    Added initial implementation pick 7eac5b44a5c0 Added table of contents to the README fixup -C Added table of contents to the README pick 217c2803c799 Fixed JSON schema
  220. Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation fixup -C

    Added initial implementation pick 7eac5b44a5c0 Added table of contents to the README fixup -C Added table of contents to the README pick 217c2803c799 Fixed JSON schema
  221. Git Commit (fixup) pick 2dc5e2e29e22 Added initial implementation fixup -C

    Added initial implementation pick 7eac5b44a5c0 Added table of contents to the README fixup -C Added table of contents to the README pick 217c2803c799 Fixed JSON schema
  222. Git Commit (fixup)

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

    of contents 8450b65fc5ec Fixed JSON schema git log --pretty=format:"%h %s"
  224. Git Commit (squash) git commit --squash <sha> https://www.alchemists.io/screencasts/git_commit_squash

  225. Git Commit (squash) https://www.alchemists.io/screencasts/git_commit_squash

  226. 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
  227. 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
  228. 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
  229. 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
  230. 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
  231. 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
  232. Git Commit (amend) git commit --amend https://www.alchemists.io/screencasts/git_commit_amend

  233. Git Commit (amend) git commit --amend --no-edit 💡 https://www.alchemists.io/screencasts/git_commit_amend

  234. Git Commit (amend) git commit --amend --no-edit --all 💡 https://www.alchemists.io/screencasts/git_commit_amend

  235. Git CLI - Advanced

  236. Git CLI - Advanced ⚡

  237. (⚡ fast rebase ⚡) GIT_EDITOR=true git rebase --interactive main Git

    Rebase CLI https://www.alchemists.io/projects/dotfiles
  238. (⚡ fast rebase ⚡) GIT_EDITOR=true git rebase --interactive main 💡

    Git Rebase CLI https://www.alchemists.io/projects/dotfiles
  239. Git Configuration - Rebase Tips https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

  240. Git Configuration - Rebase Tips 💡 https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

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

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  242. [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  243. [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  244. [rebase] abbreviateCommands = true autoSquash = true autoStash = true

    Git Configuration (Rebase) ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  245. [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/main/home_files/.gitconfig.tt
  246. [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  247. [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  248. [rerere] enabled = true autoUpdate = true Git Configuration (Rerere)

    ~/.gitconfig: https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
  249. [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/main/home_files/.gitconfig.tt
  250. Next Steps

  251. Next Steps

  252. Articles https://www.alchemists.io/articles

  253. Articles https://www.alchemists.io/articles

  254. Screencasts https://www.alchemists.io/screencasts

  255. Screencasts https://www.alchemists.io/screencasts

  256. Tools https://www.alchemists.io/projects

  257. Tools Dotfiles (https://www.alchemists.io/projects/dotfiles) https://www.alchemists.io/projects

  258. Tools Dotfiles (https://www.alchemists.io/projects/dotfiles) Git Lint (https://www.alchemists.io/projects/git-lint) https://www.alchemists.io/projects

  259. Tools Dotfiles (https://www.alchemists.io/projects/dotfiles) Git Lint (https://www.alchemists.io/projects/git-lint) Milestoner (https://www.alchemists.io/projects/milestoner) https://www.alchemists.io/projects

  260. Tools Dotfiles (https://www.alchemists.io/projects/dotfiles) Git Lint (https://www.alchemists.io/projects/git-lint) Milestoner (https://www.alchemists.io/projects/milestoner) Rubysmith (https://www.alchemists.io/projects/rubysmith)

    https://www.alchemists.io/projects
  261. Tools Dotfiles (https://www.alchemists.io/projects/dotfiles) Git Lint (https://www.alchemists.io/projects/git-lint) Milestoner (https://www.alchemists.io/projects/milestoner) Rubysmith (https://www.alchemists.io/projects/rubysmith)

    Gemsmith (https://www.alchemists.io/projects/gemsmith) https://www.alchemists.io/projects
  262. Thanks 🙇 https://www.alchemists.io