旧仓库有些乱七八糟的提交纪录,有些可能还有敏感信息,如果我们需要清除所有这些历史纪录,成为一个全新的库,但是代码保持不变,方法如下:
Checkout
git checkout --orphan latest_branch
Add all the files
git add -A
Commit the changes
git commit -am "commit message"
Delete the branch
git branch -D master
Rename the current branch to master
git branch -m master
Finally, force update your repository
git push -f origin master
原文:how-to-delete-all-commit-history-in-github
如果只是想从中删除某些提交纪录,可以如下操作:
一个例子
git revert
确认 diff
另外一种方式
如果提交后github不显示commit纪录,或者想修改提交的github邮箱账号,方法如下:
简单的就是在仓库下执行 vim .git/config 指定用户信息
[user]
name = anzhihe
email = anzhihe@xxx.com
但是如果是个老仓库的话请用如下方法修改:
1.clone你需要修改commit记录的repo
git clone --bare https://github.com/user/repo.git
cd repo.git
2.复制以下代码,建立script.sh文件(文件名随便),并根据你的信息修改以下变量:旧的Email地址(就是commit记录中的那个),正确的用户名,正确的邮件地址
#!/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
然后执行script.sh
3.把正确历史 push 到 github
git push --force --tags origin 'refs/heads/*'
4.删掉你clone的repo
至此就可以了,刷新github主页,没有意外就可以看到全部提交记录了。
不显示commit记录的原因还有其他的,我这个只针对邮箱错误的原因,如不是这个原因请参考https://help.github.com/articles/why-are-my-contributions-not-showing-up-on-my-profile/
原文:https://www.jianshu.com/p/82ee1c341456