Bird
Raised Fist0
Gitdevops~5 mins

Editing commit messages with rebase in Git - Commands & Configuration

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Sometimes you make a commit message that is unclear or has a typo. Git lets you change past commit messages using a tool called rebase. This helps keep your project history clean and easy to understand.
When you want to fix a typo in the last few commit messages before sharing your work.
When you want to add more detail to a commit message to explain what you did.
When you realize a commit message is too vague and want to make it clearer.
When you want to reorder commits and update their messages at the same time.
When preparing your commits before pushing them to a shared repository.
Commands
Shows the last 5 commits in short form so you can see which commit messages you want to edit.
Terminal
git log --oneline -5
Expected OutputExpected
a1b2c3d Fix typo in README b2c3d4e Add user login feature c3d4e5f Update styles for homepage d4e5f6a Initial commit
--oneline - Shows each commit in one line for easy reading
-5 - Limits output to last 5 commits
Starts an interactive rebase for the last 3 commits so you can choose which commit messages to edit.
Terminal
git rebase -i HEAD~3
Expected OutputExpected
pick a1b2c3d Fix typo in README pick b2c3d4e Add user login feature pick c3d4e5f Update styles for homepage # Rebase 1234567..c3d4e5f onto 1234567 (3 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 # # To change a commit message, replace 'pick' with 'reword' for that commit.
-i - Starts interactive mode to edit commits
HEAD~3 - Specifies the last 3 commits to rebase
After choosing to reword a commit, this command lets you change the commit message in your text editor.
Terminal
git commit --amend
Expected OutputExpected
No output (command runs silently)
After editing the commit message, this command tells git to continue applying the rest of the commits.
Terminal
git rebase --continue
Expected OutputExpected
Successfully rebased and updated refs/heads/main.
Checks the last 3 commit messages to confirm your changes were saved.
Terminal
git log --oneline -3
Expected OutputExpected
a1b2c3d Fix typo in README (edited) b2c3d4e Add user login feature c3d4e5f Update styles for homepage
--oneline - Shows commits in one line
-3 - Limits output to last 3 commits
Key Concept

If you remember nothing else from this pattern, remember: interactive rebase lets you safely change past commit messages before sharing your code.

Common Mistakes
Trying to edit commit messages after pushing to a shared repository without coordination.
Changing pushed commits rewrites history and can confuse others working on the project.
Only edit commit messages for commits that have not been pushed or coordinate with your team before rewriting history.
Using 'git rebase -i HEAD~3' but not changing 'pick' to 'reword' for the commit message you want to edit.
Git will not prompt you to edit the message if you leave 'pick' unchanged.
Change 'pick' to 'reword' for the commit(s) whose messages you want to edit.
Closing the editor without saving the new commit message during amend.
The commit message will not change if you do not save your edits.
Make sure to save and close the editor properly to apply the new commit message.
Summary
Use 'git rebase -i HEAD~N' to start editing the last N commits interactively.
Change 'pick' to 'reword' for commits whose messages you want to change.
Edit the commit message when prompted, then run 'git rebase --continue' to finish.
Verify changes with 'git log --oneline' to see updated commit messages.

Practice

(1/5)
1. What does the command git rebase -i HEAD~3 allow you to do?
easy
A. Delete the last 3 commits permanently
B. View the commit history without changes
C. Create 3 new commits automatically
D. Interactively edit the last 3 commits, including their messages

Solution

  1. Step 1: Understand the command purpose

    git rebase -i HEAD~3 opens an interactive editor for the last 3 commits.
  2. Step 2: Recognize the interactive editing feature

    It allows changing commit messages, reordering, or squashing commits.
  3. Final Answer:

    Interactively edit the last 3 commits, including their messages -> Option D
  4. Quick Check:

    Interactive rebase edits commits [OK]
Hint: Use -i with HEAD~N to edit last N commits [OK]
Common Mistakes:
  • Thinking it deletes commits
  • Assuming it creates new commits
  • Confusing it with git log
2. Which line correctly changes a commit action to edit its message during an interactive rebase?
easy
A. reword abc123 Update README with new info
B. pick abc123 Fix typo in README
C. edit abc123 Add new feature
D. delete abc123 Remove unused file

Solution

  1. Step 1: Identify the correct keyword for editing messages

    In interactive rebase, reword lets you change the commit message only.
  2. Step 2: Compare options

    edit pauses for full commit changes, pick keeps commit as is, delete is invalid here.
  3. Final Answer:

    reword abc123 Update README with new info -> Option A
  4. Quick Check:

    Use 'reword' to edit message only [OK]
Hint: Change 'pick' to 'reword' to edit commit messages [OK]
Common Mistakes:
  • Using 'edit' when only message change is needed
  • Leaving 'pick' unchanged
  • Using invalid 'delete' keyword
3. After running git rebase -i HEAD~2 and changing the first commit's action from pick to reword, what happens next?
medium
A. Git deletes the first commit
B. Git opens an editor to change the first commit message, then continues rebase
C. Git aborts the rebase immediately
D. Git merges the two commits automatically

Solution

  1. Step 1: Understand 'reword' effect during rebase

    Changing 'pick' to 'reword' tells Git to pause and open the commit message editor for that commit.
  2. Step 2: Follow rebase process

    After editing the message, Git continues applying remaining commits automatically.
  3. Final Answer:

    Git opens an editor to change the first commit message, then continues rebase -> Option B
  4. Quick Check:

    'reword' opens message editor [OK]
Hint: Reword pauses to edit message, then continues [OK]
Common Mistakes:
  • Thinking rebase aborts on reword
  • Assuming commits get deleted
  • Expecting automatic merge without editing
4. You ran git rebase -i HEAD~2 and changed 'pick' to 'reword' for the second commit, but after saving, Git shows an error: error: could not apply abc123. What is the likely cause?
medium
A. You used 'reword' instead of 'edit'
B. You forgot to save the commit message editor
C. There is a conflict applying the second commit during rebase
D. The commit hash is invalid

Solution

  1. Step 1: Understand the error message

    error: could not apply abc123 means Git failed to apply that commit, usually due to conflicts.
  2. Step 2: Relate to rebase process

    During rebase, conflicts can happen if changes overlap; you must resolve them manually.
  3. Final Answer:

    There is a conflict applying the second commit during rebase -> Option C
  4. Quick Check:

    Apply error = conflict during rebase [OK]
Hint: Apply errors usually mean conflicts to resolve [OK]
Common Mistakes:
  • Assuming 'reword' causes error by itself
  • Ignoring conflict resolution step
  • Thinking commit hash is wrong
5. You want to edit the commit messages of the last 4 commits but keep the commit content unchanged. Which sequence of commands and actions is correct?
hard
A. Run git rebase -i HEAD~4, change all 'pick' to 'reword', save, then edit each message when prompted
B. Run git commit --amend four times in a row
C. Run git reset --soft HEAD~4 and recommit with new messages
D. Run git rebase -i HEAD~4, change 'pick' to 'edit', then change messages and contents

Solution

  1. Step 1: Choose the right rebase command

    git rebase -i HEAD~4 opens interactive rebase for last 4 commits.
  2. Step 2: Use 'reword' to edit messages only

    Changing 'pick' to 'reword' lets you edit commit messages without changing content.
  3. Step 3: Save and edit messages when prompted

    Git opens editor for each commit message in turn; you update and save them.
  4. Final Answer:

    Run git rebase -i HEAD~4, change all 'pick' to 'reword', save, then edit each message when prompted -> Option A
  5. Quick Check:

    Use 'reword' in interactive rebase for message edits only [OK]
Hint: Use 'reword' for messages, 'edit' for content changes [OK]
Common Mistakes:
  • Using commit --amend repeatedly instead of rebase
  • Resetting and recommitting loses history
  • Using 'edit' when only message change needed