據我研究,綠格子沒了是因為你修改了用戶郵箱,所以github默認不是你提交的了。你只要修改一下歷史commit的用戶郵箱即可。(我就是因為換了郵箱就出問題了)

那如何使用它更改之前已經提交過的commit的用戶郵箱呢。


查看當前commit信息

  • git rebase -i HEAD~n

    是按照時間順序由近到遠顯示最近提交的n條commit。
    比如git rebase -i HEAD~3
    會進入vim模式,英文狀態下輸入:q即可退出。

    因為我要合并的信息是最開始的兩條。最近三條信息鐵定是看不到的。

  • git rebase -i --root
    這個是從遠到近列出所有的commit信息。

修改

首先使用

git rebase -i --root --committer-date-is-author-date

后邊這個--committer-date-is-author-date是保留當時提交的時間,否則你雖然修改了但是commit時間會變為你修改的時間。


上圖中可以看到我在最后三條前邊改為e了,也就是edit編輯的意思。

將你想要修改的commit前面把pick改為e,保存退出。

不會修改的可能需要學一下vim怎么用。
在英文輸入的狀態下按i進入編輯模式,之后用法就和記事本一樣。修改完畢之后Esc退出編輯模式。
再按:,輸入wq保存修改并退出文件。

之后你會收到提示:

你可以使用

git commit --amend --author="用戶名 <用戶郵箱>"

輸入之后你就會進入修改頁面,也是vim編輯器。直接保存退出即可。

修改完第一個文件之后git rebase --continue繼續修改下一個。

直到提示你所有的已經修改完畢。

Successfully rebased and updated refs/heads/master.

最后git push origin master -f強制推到遠程倉庫即可。

將用戶郵箱修改以后,就可以看到我的綠格子已經恢復了。

更多用法看官方文檔:
https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt