2016-06-30 40 views
1

我一直在github項目中工作了幾個月y,並且由於「錯誤的作者信息」,我所做的一組提交沒有分配給我。如何在git中將錯誤作者重命名爲提交

有沒有辦法循環通過此提交或更新作者一次全部?他們大多數是100左右。

感謝

UPDATE: 得到這個錯誤試圖運行的git的bash腳本: Error

而這一次在Windows CMD:Error 2 幫助的人?我究竟做錯了什麼?

+0

我相信不可能在GIT中重寫歷史記錄。 – SiKing

+0

@SiKing你相信錯了。誠然,它通常是強烈推薦的,但它是絕對有可能的,甚至不是那麼困難。 – twalberg

+0

@twalberg嗯,喬治奧威爾會很自豪。 ;) – SiKing

回答

1

你可以修改提交編輯作者:

git commit --amend --author="John Doe <[email protected]>" 

或者使用交互式的rebase編輯多次提交。執行git rebase -i HEAD〜5,然後標記所有需要的提交進行編輯,並使用正確的作者字段重新提交它們,如上面的單個提交示例。

1

您將需要使用過濾器分支

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 
+0

我認爲第一個正是我所需要的,我無法運行它! – plicaman

1

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

+0

這是它,但在IF中使用「無效的電子郵件地址」權利? – plicaman