Git批量修改歷史commit中的user.name 和user.email
1.克隆倉庫
注意引數,這個不是普通的clone,clone下來的倉庫並不能參與開發
git clone --bare https://github.com/user/repo.git
cd repo.git
2.命令列中執行程式碼
OLD_EMAIL原來的郵箱
CORRECT_NAME更正的名字
CORRECT_EMAIL更正的郵箱
將下面程式碼複製放到命令列中執行
git filter-branch -f --env-filter '
OLD_EMAIL="wowohoo@qq.com"
CORRECT_NAME="小弟調調"
CORRECT_EMAIL="更正的郵箱@qq.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 --tags
執行過程
Rewrite 160d4df2689ff6df3820563bfd13b5f1fb9ba832 (479/508) (16 seconds passed, remaining 0 predicted)
Ref 'refs/heads/dev' was rewritten
Ref 'refs/heads/master' was rewritten
3.同步到遠端倉庫
同步到push遠端git倉庫
git push --force --tags origin 'refs/heads/*'
我還遇到了如下面錯誤,lab預設給master分支加了保護,不允許強制覆蓋。Project(專案)
->Setting
->Repository
選單下面的Protected branches
把master的保護去掉就可以了。修改完之後,建議把master的保護再加回來,畢竟強推不是件好事。
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
當上面的push 不上去的時候,先 git pull
確保最新程式碼
git pull --allow-unrelated-histories
# 或者指定分枝
git pull origin master --allow-unrelated-histories
相關文章
- Git 修改已初始化配置過的 user.name user.emailGitAI
- Make sure you configure your "user.name" and "user.email" in git.AIGit
- 修改 git repo 歷史提交的 authorGit
- git修改歷史內容的方法Git
- Git 實用操作:重寫 Commit 歷史GitMIT
- Git提交歷史的修改刪除合併Git
- 基於Git rebase修改歷史提交資訊Git
- git 修改 commit 資訊GitMIT
- git修改commit註釋GitMIT
- Git修改commit提交資訊GitMIT
- git 修改已有commit的提交日期GitMIT
- Git 修改已提交的commit註釋GitMIT
- 建立沒有commit提交歷史的新分支MIT
- git刪除歷史中的某個大檔案Git
- Git基本命令 -- 歷史Git
- git檢視提交歷史Git
- Git 檢視提交歷史Git
- git檢視歷史命令Git
- Git 檢視檔案的歷史Git
- git log提交歷史詳解Git
- 如何修剪git reflog歷史Git
- git重寫歷史記錄Git
- Git使用:大體積的歷史commit無法推送到遠端倉庫的解決方案GitMIT
- git 中撤銷已commit 的GitMIT
- git 刪除歷史指定檔案Git
- Jenkins批量刪除構建歷史版本Jenkins
- git 工作流和git commit規範GitMIT
- Git(7)-- 檢視提交歷史(git log 命令詳解)Git
- git log檢視提交歷史記錄Git
- git簡略形式檢視提交歷史Git
- 二、GIT基礎-檢視提交歷史Git
- Git改變歷史-章節筆記Git筆記
- git檢視和操作commit命令GitMIT
- Git檢視某個歷史版本的最佳實踐Git
- Git 學習記錄之演變歷史Git
- 【第八篇】- Git 檢視提交歷史Git
- git log提交歷史顯示不完全Git
- git提交歷史在一行顯示Git