Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hellatan/1925edb6a1b9e513c33fe1f1c4a55d5a to your computer and use it in GitHub Desktop.
Save hellatan/1925edb6a1b9e513c33fe1f1c4a55d5a to your computer and use it in GitHub Desktop.
  1. Choose the commit to rebase up to (this will not include the commit in the rebase)
~/$ git rebase -i 4446727
  1. Depending on your editor, a screen with the following output will show up:
  1 pick bc1ecf1 test: start mock service in setup file
  2 pick ebc37e6 fix: use array destructuring, added type checking
  3 pick bda6e77 refactor: DRY object creation with locale
  4 pick badbd2f refactor: only use this package in a node env
  5 pick f126e55 refactor: access `process.env` directly
  6 pick 39ac182 fix: linting
  7
  8 # Rebase 4446727..39ac182 onto 4446727 (6 commands)
  9 #
 10 # Commands:
 11 # p, pick <commit> = use commit
 12 # r, reword <commit> = use commit, but edit the commit message
 13 # e, edit <commit> = use commit, but stop for amending
 14 # s, squash <commit> = use commit, but meld into previous commit
 15 # f, fixup <commit> = like "squash", but discard this commit's log message
 16 # x, exec <command> = run command (the rest of the line) using shell
 17 # b, break = stop here (continue rebase later with 'git rebase --continue')
 18 # d, drop <commit> = remove commit
 19 # l, label <label> = label current HEAD with a name
 20 # t, reset <label> = reset HEAD to a label
 21 # m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
 22 # .       create a merge commit using the original merge commit's
 23 # .       message (or the oneline, if no original merge commit was
 24 # .       specified). Use -c <commit> to reword the commit message.
 25 #
 26 # These lines can be re-ordered; they are executed from top to bottom.
 27 #
 28 # If you remove a line here THAT COMMIT WILL BE LOST.
 29 #
 30 # However, if you remove everything, the rebase will be aborted.
 31 #
 32 # Note that empty commits are commented out

Instead of pick, change all of the values to edit, or its shorthand value, e. Save the file and it will take you back to the terminal.

  1. Once back in the terminal, you will see a similar command:
~/$ git rebase -i 4446727
Stopped at bc1ecf1...  test: start mock service in setup file
You can amend the commit now, with

  git commit --amend

Once you are satisfied with your changes, run

  git rebase --continue

From here, use the following commands to change the author:

~/$ git commit --amend --author="First Last <email@domain.tld>"

Followed by this output:

[detached HEAD bc1ecf1] test: start mock service in setup file
 Date: Sat May 4 19:42:59 2019 -0400
 5 files changed, 7 insertions(+), 32 deletions(-)

Then you can continue the rebase as long as there were no errors:

~/$ git rebase --continue
  1. This process will repeat until all the commits have been updated. You should see a message similr to the following:
Successfully rebased and updated refs/heads/my-branch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment