大一第一个学期,我做了一件现在想起来还有点后悔的事。

把GitHub上的仓库全部设成了private。

理由是:代码太烂,不好意思让人看见。

这个心理持续了将近半年,直到我去学校实验室后,师兄有一次看到我电脑屏幕,问我”你GitHub主页怎么什么都没有”,我解释说代码还不够好,他就笑了一下,说了句让我记忆深刻的话:

“你觉得有人会专门去翻一个大一新生的代码挑毛病吗。”

我那天晚上把所有仓库改成了public。

 

(哈哈哈说起来煮啵现在想想还有一些尴尬,不过不过,难道不是师兄有点装嘛,可恶💢)


先说一个认知问题

很多人对GitHub的第一印象,是”高手才用的东西”。

这个印象害了很多人。

GitHub本质上是一个版本控制系统的远端托管平台。版本控制这件事,跟你代码写得好不好没有关系,跟你在做什么项目也没有关系。哪怕你现在在写一个命令行猜数字游戏,它也值得被版本控制。

说白了:Git管的是”你的代码在时间轴上的变化”,GitHub管的是”这个时间轴存在云端”。 这两件事跟代码质量无关。

先把这个认知扭过来,后面的事才能展开讲。


Git:先把地基打好

GitHub建立在Git上。Git是本地版本控制工具,GitHub是远端。很多人跳过Git直接用GitHub,然后一遇到冲突就不知道怎么办。

这里面有个地方要特别说一下:commit message是写给未来的自己看的。

你现在写”fix bug”,三个月后你看到这条记录,完全不知道修了什么bug。写”修复用户登录后token未刷新导致的权限异常”,三个月后你能立刻想起来那天下午发生了什么。

这个习惯,现在养成,以后进组做项目你会感谢自己。(咳咳不要问我怎么知道的)

 


国内用GitHub,先解决访问问题

这个问题绕不开,直接说。

GitHub在国内访问不稳定,这是现实。几种实际可用的方案:

方案一:改hosts文件

原理是绕过DNS污染,直接指定GitHub服务器IP。网上有人在持续维护这个hosts列表,搜”GitHub hosts 2024”能找到,隔一段时间更新一次。免费,不需要任何工具,效果不稳定但大多数时候够用。

操作方式:把内容复制到系统hosts文件里。Windows在C:\Windows\System32\drivers\etc\hosts,Mac和Linux在/etc/hosts。

方案二:Git配置代理

如果你有条件,让Git的请求走代理是最稳定的方案:



# 设置代理(端口号换成你实际用的) git config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890 # 用完取消 git config --global --unset http.proxy git config --global --unset https.proxy

clone大仓库的时候速度差异非常明显。

方案三:SSH替代HTTPS

配置SSH密钥之后,push和pull走SSH协议,有时候比HTTPS稳定。去GitHub的Settings里找SSH Keys,按官方文档配置,一次配好永久生效。



# 生成SSH密钥 ssh-keygen -t ed25519 -C "你的邮箱" # 测试是否配置成功 ssh -T git@github.com

方案四:Gitee做镜像或替代

Gitee是国内的代码托管平台,访问速度快,不需要任何配置。很多GitHub上的开源项目在Gitee上有同步镜像,clone速度是GitHub的十倍不止。

我自己的做法是:重要项目同时维护两个远端,一个GitHub,一个Gitee。



# 给本地仓库同时添加两个远端 git remote add origin git@github.com:你的用户名/项目名.git git remote add gitee git@gitee.com:你的用户名/项目名.git # 推送的时候两个都推 git push origin main git push gitee main

GitHub是你的国际门面,Gitee是国内日常用的顺手工具。两个都要有,不要只用一个。

 


GitHub Student Developer Pack

这个东西很多人大三才知道,白白浪费了两年。

用学校邮箱在GitHub Education申请学生认证,通过之后能领一堆东西。国内学校基本都能过审,需要上传学生证照片或者学校邮件作为证明。

值得重点关注的:

GitHub Copilot。 AI代码补全,你写代码它实时给你建议,正常收费,学生免费。争议我知道,有人说这东西让人不动脑。我的体感是:它是个工具,不是拐杖。你得能看懂它补出来的代码,不然出了bug你连问题在哪都找不到。大一用它提速没问题,但别把它当答案,把它当参考。(另外有大佬可能看不上这个,可能感觉claude更好用,这里就不展开了)

GitHub Pro。 私有仓库的高级功能,课程作业不想公开就放private仓库,不受限制。

各类云服务额度。 Azure、DigitalOcean、Heroku,都有免费额度,部署你的项目用得上。大二大三做项目需要服务器的时候会想起来这件事。

大一就去领,能用四年。这件事没有理由拖。


你的GitHub主页是你最早的技术简历

这个认知在国内互联网圈越来越普遍。很多公司的技术面试官,收到简历第一件事就是点开GitHub链接。(当然了,根据煮啵观察,其实实际上很少有人把自己的链接放到简历里面哈哈哈)

所以主页长什么样,比你现在觉得的重要。

Contribution图要绿。 主页上那个绿色方块图,每次commit会填色。我说的不是叫你为了绿而commit——是说”持续在写代码这件事本身是可见的”。一个大四找工作的学生,GitHub上三年几乎没有提交记录,和每周稳定有几次提交,给面试官的信号是完全不同的。

从现在开始commit,哪怕只是改了一个函数,哪怕只是加了几行注释。

每个仓库的README要认真写。 面试官如果对你的项目感兴趣,第一件事是看README。至少写清楚:这个项目是干什么的、怎么在本地跑起来、用了什么技术。不用华丽,清晰就行。

写README这件事还有个隐藏收益:逼你把自己做的东西说清楚。 很多同学写了一个项目,让他介绍的时候支支吾吾说不清楚。README写顺了,面试的时候项目介绍自然就流畅了。

建一个个人主页README。 GitHub有个功能,新建一个和你用户名同名的仓库,里面的README会直接显示在你的主页。可以写:你在学什么方向、用过哪些技术栈、做过什么项目。不需要很长,100到200字,有内容总比空着好。


怎么用GitHub真正提升技术

存自己的代码只是第一步。GitHub上有几亿个仓库,是全世界最大的免费学习资料库,大多数人只用了1%。

读源码,被严重低估的学习方式。

你学了Python,用过requests。去GitHub把它克隆下来,从api.py开始读。不要试图一次读懂所有,找一个你用过的函数,顺着调用链往里走,看它实际做了什么。

这个过程很痛苦,尤其是第一次。但它给你的东西,任何教程都给不了:你会开始理解什么叫”工程上的代码”,和你在课堂写的玩具代码差在哪里。

我第一次读源码是大一下学期,读flask,读了一个下午,只搞懂了路由注册的那十几行代码。但那十几行代码让我对”装饰器”的理解,比我之前看的所有教程加起来都深。

找合适的开源项目跟着学。

不是让你上来就看Linux内核。找Star数在1000到5000之间、有中文README或者注释的项目。看它的目录结构怎么组织、模块怎么划分、测试文件怎么写。

工程上的东西,课堂里不教。目录结构怎么规划、配置文件怎么管理、错误处理怎么做,这些只有在真实项目里才能看到。

国内有几个适合大一阶段参考的仓库:

  • CS-Notes / JavaGuide:面试向,大三重点看,大一可以当知识地图用

  • hello-algorithm / labuladong的算法小抄:算法学习,结合刷题用

  • awesome-python / awesome-cpp:技术栈资源汇总,找学习资料的时候先来这里

  • free-programming-books-zh_CN:免费中文编程书籍合集

这类”awesome”系列仓库是很好的资源导航,书单、工具、框架都有,比随机百度靠谱得多。

从提issue开始参与开源。

不是叫你上来就提PR。先从提issue开始,门槛很低:你用某个项目时发现文档有个地方没写清楚,或者有个功能按README说的方式用报错了,去issue区说。

用中文没问题,很多国内开源项目的issue区本来就是中文的。认真描述:你的环境是什么、你做了什么操作、报了什么错、你自己试过什么解决方法。

一个写得清晰的issue,比一个糊弄的PR更受maintainer欢迎。

等你熟悉了某个项目,发现一个小bug自己能修,再去提PR。从改文档错别字开始也行,没人嫌弃。


大一到大四,用GitHub的节奏

这个时间线不是我编的,是我综合了身边几个师兄师姐的经历拼出来的:

大一: git命令用熟,课程作业全部推上GitHub,每次改动都commit,README开始认真写。这一年不求多,求习惯。

大二: 开始有课程项目和自己的小项目,主页contribution图开始绿起来。读开源项目源码,尝试提issue。这一年开始有内容可以放简历项目栏。

大三: 找暑期实习,GitHub主页是简历的延伸。面试官会看你的仓库,会看你的commit历史。这时候你会庆幸大一没有把仓库全设成private。

大四: 项目经验够了,有的人开始自己发起小项目,说不定有人来提PR。也有人在大公司开源项目里留下了自己的commit记录。这都是从大一那个”Hello World”仓库开始的。


我现在实验室的桌面上贴了一句话,是我导说的,当时是在批评我一个实验的版本管理做得很乱:

“你连自己做过什么都说不清楚,怎么让别人相信你能做好新的事情。”

(咳咳,有拍我导马屁嫌疑,dddd)

 

版本控制这件事,表面上是在管代码,实际上是在管你思考和工作的痕迹。

GitHub是存这些痕迹的地方。

从现在开始存。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐