修改git全部已提交的使用者名稱和郵箱
即:修改git所有commit中的使用者名稱和email
作為一名 Git 苦手,我一直使用的是傻瓜級的 Github 客戶端,去年九月遷移到 OS X 後也是如此。好幾個月後我發現自己的 contribution graph 有一大片空白,才意識到遷移之後 commit 的作者資訊都錯誤了…
Before
沒計入 contribution 簡直不能忍啊!身為打卡強迫症覺得這幾個月相當於白乾了啊!
檢視 git log 發現提交者的郵箱是 Uni@Uni-MacBook-Pro.local,明白了原因是沒有配置正確的郵箱。
配置方法:
git config --global user.email "youremail@google.com"
git config --global user.name "your name"
但是補救措施只對以後的 commit 起效。如果想修改之前的作者資訊,Github 給出了可靠的官方指南:Changing author info。我打算照做的時候卻發現第三步要複製貼上的指令碼怎麼也找不到…後來意識到是 Gist 被牆了 = = 魂淡!
掛上 SS 終於看到了完整指令碼…把我翻譯後的完整步驟貼到下面來。
改變作者資訊
為改變已經存在的 commit 的使用者名稱和/或郵箱地址,你必須重寫你 Git repo 的整個歷史。
警告:這種行為對你的 repo 的歷史具有破壞性。如果你的 repo 是與他人協同工作的,重寫已釋出的歷史是一種不好的習慣。僅限緊急情況執行該操作。
使用指令碼改變你 repo 的 Git 歷史
我們寫了一段能把 commit 作者舊的郵箱地址修改為正確使用者名稱和郵箱的指令碼。
注意:執行這段指令碼會重寫 repo 所有協作者的歷史。完成以下操作後,任何 fork 或 clone 的人必須獲取重寫後的歷史並把所有本地修改 rebase 入重寫後的歷史中。
在執行這段指令碼前,你需要準備的資訊:
欲修改的舊的郵箱地址
正確的使用者名稱和郵箱地址
1.開啟終端(Mac 或 Linux 使用者)或命令列(Windows 使用者)。
2.建立一個你的 repo 的全新裸 clone (repo.git 替換為你的專案,下同)
git clone --bare https://github.com/user/repo.git
cd repo.git
3.複製貼上指令碼,並根據你的資訊修改以下變數:
OLD_EMAIL
CORRECT_NAME
CORRECT_EMAIL
指令碼:
#!/bin/sh git 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 --tags4.按
Enter
執行指令碼。5.檢視新 Git 歷史有沒有錯誤。
6.把正確歷史 push 到 Github:(push 有困難時記得修改 DNS 或者搭梯子)
git push --force --tags origin 'refs/heads/*'
7.清除臨時 clone。
cd ..
rm -rf repo.git
All done!現在遺失的 contribution 都回來啦~新的一年記得在 Github 上勤打卡~
注:當執行完上述的命令後,發現新clone出來的歷史記錄中name和email資訊已經為最新的資訊;可是在執行上面的腳步之前已經clone出來的專案,如果執行git pull的話,歷史記錄中的name和email資訊還是原來的資訊
相關文章
- Git修改和配置使用者名稱和郵箱Git
- Git 檢視和修改使用者名稱與郵箱Git
- git使用者名稱和郵箱配置Git
- git配置使用者名稱和郵箱 git設定使用者名稱郵箱有什麼用Git
- Git修改提交的使用者名稱和EmailGitAI
- git設定使用者名稱和郵箱Git
- git 設定使用者名稱和郵箱Git
- Git使用者名稱郵箱配置Git
- 如何修改git已提交記錄的郵箱?Git
- git 修改之前提交記錄的某幾次記錄的賬號和郵箱Git
- Git修改檔名稱Git
- git修改檔案的名稱Git
- Laravel 實現使用者名稱 + 郵箱 + 手機號登入Laravel
- git提交時支援檔名大小寫的修改Git
- git本地修改賬號密碼及郵箱Git密碼
- jQuery的Ajax方法實現註冊郵箱時使用者名稱查詢jQuery
- 修改oracle中的使用者名稱和密碼Oracle密碼
- 修改 Ubuntu 系統使用者名稱和登入名Ubuntu
- 如何把 Laravel 預設郵箱登入改成使用者名稱登入Laravel
- 修改git遠端倉庫分支名稱Git
- TortoiseGit(烏龜git) 清除已經儲存使用者名稱密碼的方法Git密碼
- github修改使用者名稱Github
- 快速修改Oracle使用者名稱Oracle
- Git的修改提交記錄和變基Git
- repo 修改郵箱地址
- git 修改提交作者及提交日期Git
- git 使用者名稱密碼相關Git密碼
- 修改 linux&unix 使用者名稱Linux
- oracle中的某一個使用者名稱修改Oracle
- git儲存使用者名稱與密碼Git密碼
- 實現郵箱的已讀回執
- Git 忽略已經提交的檔案Git
- oracle11g修改使用者名稱Oracle
- 修改oracle使用者名稱,表空間名字,Oracle
- 公司網站使用者名稱密碼修改?網站密碼
- Git修改commit提交資訊GitMIT
- 使用“基表修改法”快速修改Oracle使用者名稱(z)Oracle
- 【USER】使用“基表修改法”快速修改Oracle使用者名稱Oracle