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
(下面是執(zhí)行 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
若要使用更新的提交更新源,請執(zhí)行以下操作。

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 關注
- 569 瀏覽
添加回答
舉報