发现问题
提交github的代码后发现时间轴的点没有变绿其实也没啥关系代码都在仓库里
没关系不影响仓库使用
( 好想留着绿点装逼啊)
寻找问题出现的原因
解决方案打印log出来后发现原因
commit eb5b34574a93f2b3ad0cbeb952783e0d9e0cf735 (HEAD -> main, origin/main)
Author: 姜永挺 <9695527+jiang-yongting@user.noreply.gitee.com>
Date: Fri Jun 2 19:49:32 2023 +0800
引入antd,制作弹窗提示
commit 8aa631286ea7c5a657bce1e8a4e9da889da2fe48
Author: 姜永挺 <9695527+jiang-yongting@user.noreply.gitee.com>
Date: Fri Jun 2 19:49:19 2023 +0800
删除没用代码
commit 4fc4d39c018ad1f58b95b224e200cafbf8c17ce0
Author: 姜永挺 <9695527+jiang-yongting@user.noreply.gitee.com>
Date: Fri Jun 2 15:04:05 2023 +0800
修改css
commit e59dc151b39cfa45e62cbd2d14acca62cf04de51
Author: YongTing <jiangyongting0810@gmail.com>
Date: Wed May 31 21:02:52 2023 +0800
修改css
commit 63773fcfe3f07afb50fadd661068ea913763ff70
Author: YongTing <jiangyongting0810@gmail.com>
Date: Wed May 31 19:42:54 2023 +0800
随机数据
Author:这一行因为之前提交gitee的原因导致作者信息发生了改变,邮箱与GitHub的邮箱对应不上
只需要把Git历史记录中的作者信息修改回原来的样子就可以了
如何修改Git历史记录中的作者信息
- 在本地仓库中,打开命令行或终端。
- 创建一个新的分支,以便在重写历史时保留原始分支的备份
git branch backup
- 切换到新创建的分支:
git checkout backup
- 运行以下命令来重写历史记录,并将旧的作者信息替换为新的作者信息:
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "9695527+jiang-yongting@user.noreply.gitee.com" ];
then
//这里改成自己的信息
export GIT_AUTHOR_NAME="YongTing";
export GIT_AUTHOR_EMAIL="jiangyongting0810@gmail.com";
export GIT_COMMITTER_NAME="YongTing";
export GIT_COMMITTER_EMAIL="jiangyongting0810@gmail.com";
fi;
git commit-tree "$@";
' HEAD
替换"错误的作者信息"为你要修改的旧作者的完整邮箱地址,将"作者名字"和"对应邮箱"替换
- 等待命令执行完成,它会重新写入所有的提交。在大型仓库中,这可能需要一些时间。
- 检查重写后的历史记录,确保作者信息已被修改
git log
- 如果确认重写历史记录的结果是正确的,可以使用以下命令强制推送更改到远程仓库
git push --force origin backup
这将新的历史记录推送到远程仓库的备份分支上。
- 可选择删除旧的分支:
git branch -D main
- 重命名备份分支为
main:
git branch -m backup main
现在,主分支应具有经过修改的作者信息。
这种操作可能会影响团队中的其他人对仓库的操作,特别是如果他们已经克隆了你的仓库并在进行重写之前拉取了修改。在进行此操作之前,请确保与团队中的其他成员进行沟通,并确保他们在重写历史之前拉取了最新的更改。
(减少背锅)
解决问题
心爱的绿点点出现了,
我爱绿色
后续:将修改后的Git历史记录推送到GitHub
如果你已经完成了本地仓库的历史记录修改,并希望将更改推送到GitHub上的仓库,请按照以下步骤进行操作:
-
在本地仓库中,确保你当前位于修改后的
main分支上。 -
运行以下命令将本地仓库与GitHub上的仓库关联起来:
git remote add origin <GitHub仓库的URL>将
<GitHub仓库的URL>替换为你的GitHub仓库的URL。这将添加一个名为origin的远程仓库。 -
使用以下命令将修改后的历史记录推送到GitHub仓库:
git push --force origin main请注意,使用
--force标志是必要的,因为你已经改变了历史记录,并且需要覆盖GitHub上的旧提交。 -
等待推送完成,然后刷新GitHub仓库页面。你应该能够看到修改后的作者信息已经更新为新的值。
-
如果其他人在你进行历史记录修改之前已经从GitHub上的仓库拉取了修改,他们将会遇到问题。在他们尝试将自己的更改推送回仓库时,Git会发现历史记录不匹配,并需要他们在拉取最新更改之后手动解决冲突。因此,在进行历史记录修改之前,请确保与团队中的其他成员进行充分沟通,并确保他们在操作之前拉取了最新的更改。
在使用--force标志推送修改后的历史记录时要小心操作。这可能会导致其他人的提交丢失或出现冲突。建议在进行此类操作之前备份重要的仓库数据,并与团队中的其他成员共享你的意图和计划。