我对git非常感兴趣,通常是git commit,pull和push是我唯一的命令。 最近注意到我的提交设置为默认名称和电子邮件,并希望更改它。 愚蠢地我运行了这个,我在某个帖子找到了:
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail';
GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" HEAD
我认为这只会改变我的提交,但它会更改回购邮件中的所有提交以获取我的姓名和电子邮件。当然,为了继续我的“愚蠢”,我推动了改变。
此外,我似乎丢失了历史记录,并且github上的所有提交似乎也有重复的条目。一个用我的名字和电子邮件和原始的。
有没有办法还原呢?也许使用先前拉动的副本来推送原始信息?
答案 0 :(得分:7)
如果在执行filter-branch命令后没有做任何事情来清理松散的对象,则可以重置master分支(假设在给出命令时HEAD是master):
git reset --hard refs/original/master
答案 1 :(得分:1)
如果您尚未清理,可以使用以下代码重置分支:git reset --hard refs/original/master
这将在您尝试之前重新加载所有原始文件:
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" "--tag-name-filter cat -- --all"
答案 2 :(得分:1)
一位同事能够与一些git专家交谈,似乎前一个副本中的'git push -f'解决了这个问题。另外,我需要在我的副本上执行git pull --rebase。
感谢您的帮助。