Git 實戰手冊(一): 批量修改log中的提交信息


本文須知

背景介紹

事情的起源是這樣的:迷戀的谷歌的我最近申請了一個新的 google 郵箱。然后果斷在 github 上更新了郵箱地址,並且刪除了之前的 163 等國內郵箱。

回到 github 首頁,我發現之前的項目提交記錄都沒了。到底什么情況(O_o)??

看一張災難現場圖:

1

仔細查找了相關資料,發現了是因為之前的提交記錄中Author字段的信息是 163 等國內郵箱的。如下:

2

所以,解決方法就是:更改log中的提交信息

簡單嘗試:

通過百度,發現通過如下命令可以修改:

git commit --amend --author='名稱 <郵箱>'

但是,這只能修改最近一條。如何批量修改 log 信息呢?

解決方法

通過 google,發現stackoverflow上早有人提問,請移步牆外
同時,Github官方也提供了腳本,雖然倉庫沒了,但是復制腳本,然后執行即可,移步這里

首先,我們創建change.sh腳本,並根據個人信息復制以下腳本

#!/bin/sh

git filter-branch --env-filter '
OLD_EMAIL="填寫原來的郵箱"
CORRECT_NAME="填寫現在的名稱"
CORRECT_EMAIL="填寫現在的郵箱"
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

將腳本移入要修改的git倉庫,並執行腳本。修改后的 log 信息如下。

3

通過git push --force強行推送修改后的 log 信息。

哈哈,我的 github又重新綠了起來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM