面对小白的 Git、GitHub 上传与格子点不亮的问题
- 前言
- GitHub 格子点不亮
- 检查自己的 Git 绑定的邮箱
- 检查自己的代码是否在main分支里
- 如果出现这样的报错
- 如果出现这样的报错
- 检查自己的commit时间
- 时区转换(UTC 时区差异)
- 注意项
前言
刚接触 Git 与 GitHub 的小伙伴们,第一个遇到的问题就是网站打不开,还有不知道怎么注册,如何创建仓库。此外,还有一些问题,比如 GitHub 格子为什么点不亮,Git 为什么一直报错。
GitHub 格子点不亮
对于我们这样有“强迫症”或者希望通过可视化的记录回顾自己的学习历史的同学来说,遇到这种“明明我上传了文件,仓库里也能看见,但是格子却没亮!”的情况时,别焦急,做好这几种检查。
检查自己的 Git 绑定的邮箱
在 Git Bash 里输入git config user.email,检查自己的 GitHub 与这里的邮箱是否一致。
如果不一致,输入:
gitconfig--globaluser.email"复制你GitHub上的绑定邮箱"gitconfig--globaluser.name"你的名字"来修改全局邮箱。
⚠️重点:已经推上去的旧提交不会自动修复!旧提交用错邮箱,就算现在改配置,历史提交依旧不亮,只有新的 commit 才会生效。刚才那批旧提交如果邮箱不对,是不会亮的。
怎么测试修复是否生效?
随便改一个文件,做一次全新提交 push:
gitadd.gitcommit-m"测试贡献格子"gitpush这条全新的 commit,如果邮箱配置正确,半小时内就会点亮格子。
检查自己的代码是否在main分支里
以我的仓库为例,只有 main 分支的 commit 才会计入,其他分支不算。
在推送到 GitHub 远程仓库后
输入git push origin main
出现:
本地分支名字是 master,不是 main,因此报错。(我一直错在这步)
此时可以选择两种方法:
直接推 master
gitpush origin master把本地 master 改成 main(以后就用 main)
gitbranch-Mmaingitpush origin main**
如果出现这样的报错
**
报错 rejected (fetch first):你的 GitHub 远程仓库(main 分支)已经有文件(大概率 README),本地和远程历史不一样,Git 不让直接推送。
解决方法:
直接敲这条命令拉取远程代码合并git pull origin main --allow-unrelated-histories
执行完之后,再推送git push -u origin main
如果弹出编辑器(Vim):直接按 Esc,输入:wq回车保存退出,完成合并。
Push 成功之后,网页仓库就能看到你的文件。
确认文件在 main 默认分支,再检查 git 邮箱是否和 github 一致,等待几分钟贡献格子才会点亮。
如果出现这样的报错
现在状态:(main|MERGING),代表合并卡住中断了,刚才 vim 没保存提交信息,合并没完成,不能 push。
第一步:终止当前失败的合并
gitmerge--abort执行完,后面括号的 |MERGING 就消失,回到普通 (main)。
第二步:重新拉取合并
gitpull origin main --allow-unrelated-histories-m"合并远程仓库"第三步:推送上去
gitpush-uorigin main执行完,看输出没有报错就成功。
如果又弹出 vim,依旧:Esc → :wq 回车。
如果实在不行
强制推送
gitpush --force-with-lease origin main此时检查自己的main分支,如果出现了自己上传的代码,则成功。
注意:强制推送后要等很长时间格子才会亮,一般24小时后就肯定会亮了。
检查自己的commit时间
GitHub 贡献日历不认你什么时候执行 git push 推送!它读取的是每一条 commit 内部保存的【AuthorDate(作者提交时间)】,也就是你本地电脑敲下 git commit 那一刻本机系统的时间,不是上传推送的时间。
验证命令:
gitlog--pretty=fuller看每一条输出里面的 AuthorDate:,这里才是 GitHub 贡献图读取的时间。如果在同一天,只能点亮一天的格子;因此,只有在不同的天数上传,才能都点亮。
那现在怎么处理呢?
建议不修改历史:
旧的已经 push 到远端的 commit 时间不建议修改。重写 git 历史、强制推送 git push -f 风险很高,仓库别人协作会直接崩,而且 GitHub 对篡改 commit 时间的提交识别很敏感。
旧的就保持现状。以后改变操作习惯。
时区转换(UTC 时区差异)
GitHub 后台统一使用 UTC(零时区)来算日期;我们国内是 UTC+8。
举个例子:你北京时间夜里 23 点 commit,换算 UTC 是前一天 15 点,于是你的提交就跑到前一天的格子上。
注意项
刚上传时可能有延迟,等几分钟再刷新
作者借助了一定的 AI,本文章中可能出现错误,但是我的问题是的确解决了