3 回答
TA贡献1866条经验 获得超5个赞
git rebase -i <earliercommit>
pick
edit
git commit --amend --author="Author Name <email@address.com>"
A-B-C-D-E-F
F
HEAD
C
D
指定 git rebase -i B
(下面是执行 git rebase -i B
命令 )如果你需要编辑 A
,使用 git rebase -i --root
为这两种情况更改行 C
和 D
从… pick
到 edit
一旦重基开始,它将首先在 C
你会 git commit --amend --author="Author Name <email@address.com>"
然后 git rebase --continue
它会在 D
那你就会 git commit --amend --author="Author Name <email@address.com>"
再一次 git rebase --continue
重新基地就完成了。 使用 git push -f
若要使用更新的提交更新源,请执行以下操作。
TA贡献2016条经验 获得超9个赞
03f482d6
42627abe
签出我们试图修改的提交。 git checkout 03f482d6
让作者改变。 git commit --amend --author "New Author Name <New Author Email>"
现在,我们有一个假设为Hash的新提交 42627abe
.检查原来的分支。 将旧的提交替换为本地的新提交。 git replace 03f482d6 42627abe
基于替换重写所有未来提交。 git filter-branch -- --all
为保持清洁而拆下更换物。 git replace -d 03f482d6
推送新的历史记录(只有在下面失败时才使用强制,并且只有在使用 git log
和/或 git diff
).git push --force-with-lease
git rebase -i 42627abe
TA贡献1859条经验 获得超6个赞
#!/bin/shgit filter-branch --env-filter ' OLD_EMAIL="your-old-email@example.com" CORRECT_NAME="Your Correct Name" CORRECT_EMAIL="your-correct-email@example.com" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags
- 3 回答
- 0 关注
- 535 浏览
添加回答
举报