Git的使用:Github提交后时间轴未显示绿点解决方案

652 阅读4分钟

发现问题

提交github的代码后发现时间轴的点没有变绿其实也没啥关系代码都在仓库里 image.png

没关系不影响仓库使用
( 好想留着绿点装逼啊)

寻找问题出现的原因

解决方案打印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历史记录中的作者信息

  1. 在本地仓库中,打开命令行或终端。
  2. 创建一个新的分支,以便在重写历史时保留原始分支的备份
git branch backup
  1. 切换到新创建的分支:
git checkout backup
  1. 运行以下命令来重写历史记录,并将旧的作者信息替换为新的作者信息:
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

替换"错误的作者信息"为你要修改的旧作者的完整邮箱地址,将"作者名字""对应邮箱"替换

  1. 等待命令执行完成,它会重新写入所有的提交。在大型仓库中,这可能需要一些时间。
  2. 检查重写后的历史记录,确保作者信息已被修改
git log
  1. 如果确认重写历史记录的结果是正确的,可以使用以下命令强制推送更改到远程仓库
git push --force origin backup

这将新的历史记录推送到远程仓库的备份分支上。

  1. 可选择删除旧的分支:
git branch -D main
  1. 重命名备份分支为main
git branch -m backup main

现在,主分支应具有经过修改的作者信息。

这种操作可能会影响团队中的其他人对仓库的操作,特别是如果他们已经克隆了你的仓库并在进行重写之前拉取了修改。在进行此操作之前,请确保与团队中的其他成员进行沟通,并确保他们在重写历史之前拉取了最新的更改。

(减少背锅)

解决问题

image.png 心爱的绿点点出现了,我爱绿色

后续:将修改后的Git历史记录推送到GitHub

如果你已经完成了本地仓库的历史记录修改,并希望将更改推送到GitHub上的仓库,请按照以下步骤进行操作:

  1. 在本地仓库中,确保你当前位于修改后的main分支上。

  2. 运行以下命令将本地仓库与GitHub上的仓库关联起来:

    git remote add origin <GitHub仓库的URL>
    

    <GitHub仓库的URL>替换为你的GitHub仓库的URL。这将添加一个名为origin的远程仓库。

  3. 使用以下命令将修改后的历史记录推送到GitHub仓库:

    git push --force origin main
    

    请注意,使用--force标志是必要的,因为你已经改变了历史记录,并且需要覆盖GitHub上的旧提交。

  4. 等待推送完成,然后刷新GitHub仓库页面。你应该能够看到修改后的作者信息已经更新为新的值。

  5. 如果其他人在你进行历史记录修改之前已经从GitHub上的仓库拉取了修改,他们将会遇到问题。在他们尝试将自己的更改推送回仓库时,Git会发现历史记录不匹配,并需要他们在拉取最新更改之后手动解决冲突。因此,在进行历史记录修改之前,请确保与团队中的其他成员进行充分沟通,并确保他们在操作之前拉取了最新的更改。

在使用--force标志推送修改后的历史记录时要小心操作。这可能会导致其他人的提交丢失或出现冲突。建议在进行此类操作之前备份重要的仓库数据,并与团队中的其他成员共享你的意图和计划。