【Git】git的提示

在今天看我的github仓库的时候,意外发现我的贡献率很少,只有在创建仓库的时候才显示贡献率,我感到很奇怪,明明这几天天天提交啊,遇事不决百度谷歌,原来是因为git初始化设定时没有设定正确的用户名和邮箱(主要是邮箱)
于是输入命令查看用户名和邮箱

git config user.name
git config user.email

然后发现我的email与github上记录的不一样,怪不得我以前小绿点一直很少,因为完全没记进去。也怪我调github 桌面版的时候改了push的邮箱,本以为没什么关系,结果git判断我不是我的github主人呀

git config--global user.name "your name"
git config--global user.email "your email"

问题解决了,不过我曾经那些记录都没了岂不是很不爽,所以在网上找到一个方法,分享给大家

使用脚本来改变某个repo的Git历史
我们已经创建了一个脚本,使用正确的姓名和电子邮件地址提交后,你以前提交的所有的commits中的作者信息及提交者字段中的旧的用户名和邮箱地址都将被更正	
注意: 执行这段脚本会重写 repo 所有协作者的历史。完成以下操作后,任何 fork 或 clone 的人必须获取重写后的历史并把所有本地修改 rebase 入重写后的历史中。

在执行这段脚本前,你需要准备的信息:

Mac、Linux下打开Terminal,Windows下打开命令提示符(command prompt)
给你的repo创建一个全新的clone
git clone --bare https://github.com/user/repo.git
cd repo.git

复制粘贴脚本,并根据你的信息修改以下变量:旧的Email地址,正确的用户名,正确的邮件地址

#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="旧的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

按 Enter键 执行脚本。
用git log命令看看新 Git 历史有没有错误
把正确历史 push 到 Github

git push --force --tags origin 'refs/heads/*'

删掉刚刚临时创建的 clone

cd ..
rm -rf repo.git

不过此时我们如果以后再push,会爆出merge的错,所以需要再写一行代码修复

git pull --allow-unrelated-histories
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章