我一直在github項目中工作了幾個月y,並且由於「錯誤的作者信息」,我所做的一組提交沒有分配給我。如何在git中將錯誤作者重命名爲提交
有沒有辦法循環通過此提交或更新作者一次全部?他們大多數是100左右。
感謝
UPDATE: 得到這個錯誤試圖運行的git的bash腳本: Error
而這一次在Windows CMD:Error 2 幫助的人?我究竟做錯了什麼?
我一直在github項目中工作了幾個月y,並且由於「錯誤的作者信息」,我所做的一組提交沒有分配給我。如何在git中將錯誤作者重命名爲提交
有沒有辦法循環通過此提交或更新作者一次全部?他們大多數是100左右。
感謝
UPDATE: 得到這個錯誤試圖運行的git的bash腳本: Error
而這一次在Windows CMD:Error 2 幫助的人?我究竟做錯了什麼?
你可以修改提交編輯作者:
git commit --amend --author="John Doe <[email protected]>"
或者使用交互式的rebase編輯多次提交。執行git rebase -i HEAD〜5,然後標記所有需要的提交進行編輯,並使用正確的作者字段重新提交它們,如上面的單個提交示例。
您將需要使用過濾器分支
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD `
如果你是誰犯這個倉庫,你可以簡單地更新所有的引用不檢查舊的內容
git filter-branch -f --env-filter '
GIT_AUTHOR_NAME="Newname"
GIT_AUTHOR_EMAIL="newemail"
GIT_COMMITTER_NAME="Newname"
GIT_COMMITTER_EMAIL="newemail"
' HEAD
我認爲第一個正是我所需要的,我無法運行它! – plicaman
的ONLY用戶在任何情況下,您都可以在批次中更改多個提交的電子郵件地址,也可以使用filter-branch
。你必須要小心,只改變是你的電子郵件地址,所以你使用--commit-filter
:
$ git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ];
then
GIT_AUTHOR_NAME="Scott Chacon";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "[email protected]";
else
git commit-tree "[email protected]";
fi' HEAD
這種經歷並重寫每一個承諾有你的新地址。由於提交包含其父項的SHA-1值,因此此命令會更改歷史記錄中的每個提交SHA-1,而不僅僅是那些具有匹配電子郵件地址的提交。
參考:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
這是它,但在IF中使用「無效的電子郵件地址」權利? – plicaman
我相信不可能在GIT中重寫歷史記錄。 – SiKing
@SiKing你相信錯了。誠然,它通常是強烈推薦的,但它是絕對有可能的,甚至不是那麼困難。 – twalberg
@twalberg嗯,喬治奧威爾會很自豪。 ;) – SiKing