docs: update instructions to update old email (#7509)

feature/windows-fix-syntax-2
Seth Falco 2021-12-16 16:26:13 +01:00 committed by GitHub
parent df0117359b
commit 6eb7f71907
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 17 deletions

View File

@ -68,24 +68,25 @@ git push --force-with-lease
# Changing the email of any commit(s)
Let's take this commit history as an example:
| Commit Hash | Author Email
|---|---
| A | wrong@example.org
| B | correct@example.org
| C | correct@example.org
| D | wrong@example.org
| E | correct@example.org
| F (HEAD) | correct@example.org
To change the email of commits A and D, run
1. Perform an [interactive rebase](https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt--i) specifying the reference of the earliest commit to modify as the argument. For example, if the earlist commit with the wrong email address was 6 commits ago, you can specify the commit hash or just `HEAD~6`.
```bash
git rebase --interactive HEAD~6
```
2. You'll see a list of commits starting from the referenced commit to `HEAD`. All of them will default to the instruction `pick`, this means use the commit as-is when replaying them. For the commits you want to edit, replace the word `pick` for `edit`, then save and exit the editor.
3. The branch will rewind to the referenced commit, then replay them until it reaches a commit with the `edit` instruction. Amend the commit for the correct email address, then continue rebasing. Repeat this step until you've succesfully finishing rebasing and replayed all commits.
```bash
git commit --amend --author "Your Name <correct@example.org>"
git rebase --continue
```
4. Finally, because you modified the branch history, you'll need to force push back to your remote repository.
```bash
git reset A
git commit --amend --author="Your Name <correct@example.org>"
git cherry-pick B^..D # re-apply commits B to D
git commit --amend --author="Your Name <correct@example.org>"
git cherry-pick E^..HEAD
git push --force-with-lease
```
[![asciicast](https://asciinema.org/a/fFMZzQOgJyfUf8HTnXyRj0v02.svg)](https://asciinema.org/a/fFMZzQOgJyfUf8HTnXyRj0v02)