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.

Brooke Kuhlmann

January 11, 2023
Tweet

More Decks by Brooke Kuhlmann

Other Decks in Programming

Transcript

  1. Git Rebase
    Presented by Brooke Kuhlmann

    View Slide

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

    View Slide

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

    View Slide

  4. A Brief Review

    View Slide

  5. A Brief Review

    View Slide

  6. Merge versus Rebase

    View Slide

  7. Merge versus Rebase

    View Slide

  8. Merge versus Rebase

    View Slide

  9. Merge versus Rebase

    View Slide

  10. Merge versus Rebase

    View Slide

  11. Merge versus Rebase

    View Slide

  12. Merge versus Rebase

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. Merge Example
    (semi-linear)

    View Slide

  17. Merge Example
    (semi-linear)

    View Slide

  18. Merge Example
    (non-linear)

    View Slide

  19. Merge Example
    (non-linear)

    View Slide

  20. View Slide

  21. View Slide

  22. 🚫

    View Slide

  23. Git Log - Quick Tip

    View Slide

  24. Git Log - Quick Tip
    💡

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  39. Rebase Example

    View Slide

  40. Rebase Example

    View Slide

  41. git pull
    Merge Workflow
    Synchronize:
    1⃣

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. git pull
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  51. git pull
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  52. git pull
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  53. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  54. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    💡
    origin main

    View Slide

  55. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    🎉
    origin main

    View Slide

  56. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  57. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  58. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  59. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    origin main

    View Slide

  60. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    --rebase origin main

    View Slide

  61. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    --force-with-lease --force-if-includes
    --rebase origin main

    View Slide

  62. git fetch --prune
    git pull --rebase
    Rebase Workflow
    git switch --create example


    git commit


    ...
    git pull


    git push
    Synchronize:
    1⃣
    2⃣
    3⃣
    Push:
    Work:
    --force-with-lease --force-if-includes 💡
    --rebase origin main

    View Slide

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

    View Slide

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

    View Slide

  65. [pull]


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

    View Slide

  66. [pull]


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

    View Slide

  67. [pull]


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

    View Slide

  68. [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

    View Slide

  69. [pull]


    rebase = merges
    Git Configuration (Pull)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  70. [pull]


    rebase = merges
    Git Configuration (Pull)
    ~/.gitconfig:
    💡 Git 2.22.0 (or higher)
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  71. [fetch]


    prune = true
    Git Configuration (Fetch)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  72. [fetch]


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

    View Slide

  73. [fetch]


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

    View Slide

  74. [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

    View Slide

  75. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  76. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
    💡 git push --set-upstream origin

    View Slide

  77. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  78. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
    💡 git switch --create --track

    View Slide

  79. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
    💡 git switch --create --track
    🚫

    View Slide

  80. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
    💡

    View Slide

  81. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt
    💡

    View Slide

  82. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    ~/.gitconfig:
    💡 Git 2.30.0 (or higher)
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  83. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    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

    View Slide

  84. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    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
    🚫

    View Slide

  85. [push]


    autoSetupRemote = true


    default = simple


    followTags = true


    useForceIfIncludes = true
    Git Configuration (Push)
    git config --global push.autoSetupRemote true


    git config --global push.default simple


    git config --global push.followTags simple


    git config --global push.useForceIfIncludes true
    ~/.gitconfig:
    Command Line Interface (CLI):
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  86. Git Interactive Rebase

    View Slide

  87. Git Interactive Rebase
    🎉

    View Slide

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

    View Slide

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

    View Slide

  90. 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 log
    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


    # l, label = label current HEAD with a name


    # t, reset = reset HEAD to a label


    # m, merge [-C | -c ] [# ]


    View Slide

  91. 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 log
    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


    # l, label = label current HEAD with a name


    # t, reset = reset HEAD to a label


    # m, merge [-C | -c ] [# ]


    View Slide

  92. 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 log
    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


    # l, label = label current HEAD with a name


    # t, reset = reset HEAD to a label


    # m, merge [-C | -c ] [# ]


    View Slide

  93. 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 log
    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


    # l, label = label current HEAD with a name


    # t, reset = reset HEAD to a label


    # m, merge [-C | -c ] [# ]


    View Slide

  94. 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 log
    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


    # l, label = label current HEAD with a name


    # t, reset = reset HEAD to a label


    # m, merge [-C | -c ] [# ]


    🚫
    🚫
    🚫

    View Slide

  95. git rebase --interactive @~
    (number)
    Git Rebase CLI

    View Slide

  96. git rebase --interactive @~
    (number)
    HEAD
    Git Rebase CLI

    View Slide

  97. (branch)
    git rebase --interactive
    Git Rebase CLI

    View Slide

  98. (tag)
    git rebase --interactive
    Git Rebase CLI

    View Slide

  99. (SHA)
    git rebase --interactive
    Git Rebase CLI

    View Slide

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

    View Slide

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

    View Slide

  102. (root)
    git rebase --interactive --root

    Git Rebase CLI

    View Slide

  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

    View Slide

  104. 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

    View Slide

  105. 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

    View Slide

  106. 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

    View Slide

  107. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_pick

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  111. 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

    View Slide

  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_pick

    View Slide

  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_pick

    View Slide

  114. 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

    View Slide

  115. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_reword

    View Slide

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

    View Slide

  117. 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

    View Slide

  118. 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

    View Slide

  119. Git Rebase Editor
    pick 2dc5e2e29e22 Added initial implementation


    f7a6ea7f46b8 Added documentation


    pick 317ef2c2c735 Fixed JSON schema


    https://www.alchemists.io/screencasts/git_rebase_reword

    View Slide

  120. 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

    View Slide

  121. 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

    View Slide

  122. 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

    View Slide

  123. Git Rebase Editor
    Provides improved navigation within the README. This
    was autogenerated using `tocer --generate`.
    https://www.alchemists.io/screencasts/git_rebase_reword

    View Slide

  124. 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

    View Slide

  125. 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

    View Slide

  126. 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

    View Slide

  127. 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

    View Slide

  128. Git Rebase CLI
    https://www.alchemists.io/screencasts/git_rebase_reword

    View Slide

  129. 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

    View Slide

  130. 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

    View Slide

  131. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_edit

    View Slide

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

    View Slide

  133. 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

    View Slide

  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_edit

    View Slide

  135. 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

    View Slide

  136. 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

    View Slide

  137. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_squash

    View Slide

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

    View Slide

  139. 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

    View Slide

  140. 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

    View Slide

  141. 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

    View Slide

  142. 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

    View Slide

  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

    View Slide

  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`.


    Fixed JSON schema


    Corrects a typo in the original implementation which caused
    the builds to fail.


    https://www.alchemists.io/screencasts/git_rebase_squash
    🤢

    View Slide

  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`.


    Fixed JSON schema


    Corrects a typo in the original implementation which caused
    the builds to fail.


    https://www.alchemists.io/screencasts/git_rebase_squash

    View Slide

  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`.


    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

    View Slide

  147. 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

    View Slide

  148. 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

    View Slide

  149. 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

    View Slide

  150. 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

    View Slide

  151. 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

    View Slide

  152. 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

    View Slide

  153. 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

    View Slide

  154. 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

    View Slide

  155. 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

    View Slide

  156. Git Rebase Editor
    Added initial implementation


    https://www.alchemists.io/screencasts/git_rebase_squash

    View Slide

  157. Git Rebase Editor
    Added initial implementation


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

    View Slide

  158. Git Rebase Editor
    Added initial implementation


    First initial working implementation with README
    autogenerated with `tocer --generate`.

    https://www.alchemists.io/screencasts/git_rebase_squash

    View Slide

  159. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_fixup

    View Slide

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

    View Slide

  161. Git Rebase
    Fixup

    ⭐ ⭐

    https://www.alchemists.io/screencasts/git_rebase_fixup

    View Slide

  162. 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

    View Slide

  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_fixup

    View Slide

  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_fixup

    View Slide

  165. 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

    View Slide

  166. 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

    View Slide

  167. 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

    View Slide

  168. 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

    View Slide

  169. 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

    View Slide

  170. Git Rebase CLI
    https://www.alchemists.io/screencasts/git_rebase_fixup

    View Slide

  171. 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

    View Slide

  172. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_exec

    View Slide

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

    View Slide

  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_exec

    View Slide

  175. 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

    View Slide

  176. 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

    View Slide

  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_exec

    View Slide

  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_exec
    exec printf "%s\n" "This is an example script."

    View Slide

  179. Git Rebase CLI
    |> This is an example script.


    https://www.alchemists.io/screencasts/git_rebase_exec

    View Slide

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

    View Slide

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

    View Slide

  182. 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

    View Slide

  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_break

    View Slide

  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_break

    View Slide

  185. 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

    View Slide

  186. Git Rebase
    https://www.alchemists.io/screencasts/git_rebase_drop

    View Slide

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

    View Slide

  188. 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

    View Slide

  189. 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

    View Slide

  190. 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

    View Slide

  191. 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

    View Slide

  192. Git Rebase CLI
    https://www.alchemists.io/screencasts/git_rebase_drop

    View Slide

  193. 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

    View Slide

  194. Git Rebase Resolution
    🛠

    View Slide

  195. Git Rebase Resolution
    git rebase --abort

    View Slide

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

    View Slide

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

    View Slide

  198. Git Rebase Resolution
    git rebase --abort
    git rebase --continue
    git rebase --skip
    git rebase --show-current-patch

    View Slide

  199. Git Commit (fixup)
    git commit --fixup
    https://www.alchemists.io/screencasts/git_commit_fixup

    View Slide

  200. Git Commit (fixup)
    git commit --fixup

    https://www.alchemists.io/screencasts/git_commit_fixup

    View Slide

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

    View Slide

  202. 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

    View Slide

  203. 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

    View Slide

  204. 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

    View Slide

  205. Git Commit (fixup)
    git rebase --interactive main
    https://www.alchemists.io/screencasts/git_commit_fixup

    View Slide

  206. 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

    View Slide

  207. 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

    View Slide

  208. 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

    View Slide

  209. 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

    View Slide

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

    View Slide

  211. 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

    View Slide

  212. Git Commit (fixup)

    View Slide

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

    View Slide

  214. Git Commit (fixup)
    git commit --fixup=amend:
    💡Git 2.32.0 (or higher)

    View Slide

  215. Git Commit (fixup)
    git commit --fixup=amend:
    💡Git 2.32.0 (or higher)
    git commit --fixup=reword:

    View Slide

  216. Git Commit (fixup)

    View Slide

  217. 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"


    View Slide

  218. 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"


    View Slide

  219. 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

    View Slide

  220. Git Commit (fixup)

    View Slide

  221. 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"


    View Slide

  222. 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"


    View Slide

  223. 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

    View Slide

  224. 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

    View Slide

  225. 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

    View Slide

  226. 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

    View Slide

  227. Git Commit (fixup)

    View Slide

  228. Git Commit (fixup)
    ca5a69955876 Added initial implementation


    3226a5547e49 Added table of contents


    8450b65fc5ec Fixed JSON schema


    git log --pretty=format:"%h %s"


    View Slide

  229. Git Commit (squash)
    git commit --squash
    https://www.alchemists.io/screencasts/git_commit_squash

    View Slide

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

    View Slide

  231. 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

    View Slide

  232. 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

    View Slide

  233. 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

    View Slide

  234. 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

    View Slide

  235. 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

    View Slide

  236. 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

    View Slide

  237. Git Commit (amend)
    git commit --amend
    https://www.alchemists.io/screencasts/git_commit_amend

    View Slide

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

    View Slide

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

    View Slide

  240. Git CLI - Advanced

    View Slide

  241. Git CLI - Advanced

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  246. [rebase]


    abbreviateCommands = true


    autoSquash = true


    autoStash = true
    Git Configuration (Rebase)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  247. [rebase]


    abbreviateCommands = true


    autoSquash = true


    autoStash = true
    Git Configuration (Rebase)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  248. [rebase]


    abbreviateCommands = true


    autoSquash = true


    autoStash = true
    Git Configuration (Rebase)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  249. [rebase]


    abbreviateCommands = true


    autoSquash = true


    autoStash = true
    Git Configuration (Rebase)
    ~/.gitconfig:
    https://github.com/bkuhlmann/dotfiles/blob/main/home_files/.gitconfig.tt

    View Slide

  250. [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

    View Slide

  251. [rerere]


    enabled = true


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

    View Slide

  252. [rerere]


    enabled = true


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

    View Slide

  253. [rerere]


    enabled = true


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

    View Slide

  254. [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

    View Slide

  255. Next Steps

    View Slide

  256. Next Steps

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  262. Tools
    Dotfiles


    (https://www.alchemists.io/projects/dotfiles)
    https://www.alchemists.io/projects

    View Slide

  263. Tools
    Dotfiles


    (https://www.alchemists.io/projects/dotfiles)
    Git Lint


    (https://www.alchemists.io/projects/git-lint)
    https://www.alchemists.io/projects

    View Slide

  264. 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

    View Slide

  265. 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

    View Slide

  266. 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

    View Slide

  267. Thanks
    🙇
    https://www.alchemists.io

    View Slide