生成式软件工程
搜索

Git 与 GitHub:把项目放到网上

上一篇的提交都留在你自己的硬盘里。这一篇讲怎么把它们送到网上,以及为什么 GitHub 账号值得认真对待。

这一页讲什么
  • Git 与 GitHub 是两件不同的东西,各自负责什么;
  • 从已有项目出发的六条命令,以及它们各自改了什么;
  • 怎么注册一个能长期用的 GitHub 账号,怎么保护它;
  • 「用 GitHub 登录」到底交出去了什么,去哪里撤销;
  • 怎么判断一个项目页面是不是官方来源。

一、Git 管本机,GitHub 管托管

上一篇讲过,Git 是你电脑上的一个工具,把项目的每次改动存成快照。这些快照全部存在项目目录里的 .git 中, 只在你自己的硬盘上。硬盘坏了,历史就没了。

GitHub 是一个网站,替你把 Git 仓库存到他们的服务器上。它提供三样东西:一份远程备份、一个别人能访问的页面、以及多人协作的通道。

生活类比 Git 像你手机里的相机,负责拍照和存档;GitHub 像云相册,负责把照片传到网上去。 没有相机你拍不了照;没有云相册照片还在,只是手机丢了就一起丢了,别人也看不到。 两者可以各自单独用,但配在一起才有备份和分享。
GitGitHub
是什么装在电脑上的工具一个网站
管什么本机的提交历史远程仓库、页面展示、协作
要不要联网不需要需要
举个例子git commit打开 github.com 看仓库页面

最容易混淆的一句话:只在本机执行 commit,记录还在本机;执行了 push,才会传到远程仓库。 很多人以为提交完就「上传了」,其实只是本地存了一张快照。

二、从已有项目出发的六条命令

假设 GitHub 上已经有一个项目(自己建的,或者别人的),想把它拿到本机改一改再传回去。整套流程六条命令,够应付入门阶段绝大多数情况。

git clone <仓库地址>
cd <项目目录>
git pull
git status
# 改完文件,先看清改了什么,再挑要提交的
git add <文件名>
git commit -m "更新项目说明"
git push

三条要记住的动作,可以这么理解:

另外三条是准备工作:clone 把远程仓库第一次复制到本机;cd 进入这个目录; pull 在动手之前先取一次最新内容,避免基于旧版本改。

关键结论 改动没 add 就 commit 不进去;commit 了没 push 就只在你自己机器上。 出问题先跑 git status,它会告诉你现在处在哪一步。

新建一个本地项目时还会遇到 git init。它把当前目录变成仓库,只在「这个目录还没有仓库」的时候用。 如果项目是从 GitHub 上 clone 下来的,它已经有仓库了,不需要再 init。

常见坑:提示冲突时不要盲目覆盖 协作时别人可能同时改了同一个文件。Git 会提示冲突,并把两版内容都写进文件,用一串冒号之类的东西分开。 这时候不要急着选一边覆盖:先看清两边各改了什么,决定最终该是什么样,改完再 add 和 commit。 拿不准就把冲突提示原样发给 AI 助手,让它按你的实际情况一步步指导,别自己猜。

三、提交之前先看有没有秘密

Git 会把你提交过的内容永久记进历史。所以提交前有一件事必须做:检查文件里有没有不该上传的东西。

常见坑:删了文件不等于删了历史 把带密码的文件删掉再提交一次,旧的那次提交里密码还在。任何人翻历史都能看到。 正确的处理顺序是:立刻去服务商那里把这个密码作废、换新的,把损失控制住,再考虑清理历史。 「文件删了」和「密钥作废了」是两件不同的事,后者才是真正止损的那一步。

公开仓库尤其要谨慎:全世界都能看。私人仓库也不是保险箱,团队成员、被授权的应用都能看。

四、注册一个能长期用的 GitHub 账号

即使你现在不打算写代码,也值得先准备一个 GitHub 账号。它有两个用途:存放你的项目,以及作为第三方登录的身份 ——很多开发者工具、技术社区、在线服务都支持「用 GitHub 登录」。

关键结论 把它当成长期使用的基础账号,不是随手注册的临时号。绑一个你长期能收信的邮箱,保存好登录方式,开启双重验证。 它连接的外部网站越多,保护好它就越重要。

注册前准备三样东西:

  1. 邮箱:自己长期掌握、能正常收信的。不要用临时邮箱。
  2. 密码:和其他网站不重复的强密码。用密码管理器生成并保存,别靠脑子记。
  3. 用户名:便于长期使用的,别人能记住、你自己不后悔的。它会出现在你所有仓库的网址里。

五步走完注册

  1. 打开官方注册页。浏览器访问 github.com,点右上角 Sign up。 核对地址栏域名确实是 github.com,不要从搜索结果里的广告位、代注册页面输入邮箱和密码。
  2. 填写邮箱、密码、用户名。如果提示邮箱已被使用,先尝试找回原账号,别急着重开一个; 用户名被占用就换一个,不要去买别人的账号。
  3. 完成人机验证。可能是拼图、可能是选图题。按页面提示做,不要用来路不明的插件绕过验证, 也不要把验证交给代注册的人。
  4. 去邮箱点验证。打开注册用的邮箱,找 GitHub 发来的邮件,点里面的链接或输入验证码。 验证码和验证链接都属于敏感信息,不要转发、不要截图发到群里。没收到就先查垃圾邮件,再让页面重发一次, 始终用最新那封邮件。
  5. 完成引导,进入账号。页面可能问你用途、经验、要不要付费套餐。能跳过的个性化引导先跳过; 付费推荐一律先跳过,免费个人账号足够用,注册和基础使用都不需要填银行卡。

注册完做四项验收,缺一项就补:

五、「用 GitHub 登录」交出去了什么

这里有两个完全相反的动作,别混:

第二种情况下,那个网站拿不到你的 GitHub 密码。GitHub 会弹出一个授权页,列出对方申请哪些权限, 你点同意之后,GitHub 给对方一个凭证。看到 Sign in with GitHub、Continue with GitHub、 「使用 GitHub 登录」这类按钮,走的就是这条路径。

常见坑:闭眼点同意 授权页要读一眼:它申请的是「读取你的公开资料」,还是「读写你的仓库」?后者意味着它能改你的代码。 不认识的网站不要授权;只是为了试用一个工具,不值得把仓库读写权限交出去。

用过的授权要定期清理。在 GitHub 右上角头像 → Settings → Applications → Authorized OAuth Apps 里,能看到所有拿到过授权的应用,找到不认识或不再用的,点 Revoke 撤销。 GitHub App 是另一类,在旁边的 Authorized GitHub Apps 列表里管。

撤销的后果要说清楚:那个网站之后不能再通过这个授权访问你的 GitHub,你下次登录它可能需要重新授权。 撤销授权不等于注销那个网站的账号,也不保证对方删掉之前已经拿到的数据。

六、判断一个项目是不是官方来源

同名项目很多,甚至有专门做「高仿页面」骗下载的。下载或克隆之前,按下面几项核对一遍,通常一分钟就够。

看什么怎么判断
Star 数收藏人数。太低而宣传很响的,先怀疑。
最近更新时间两年没动过的项目,文档可能已经和现在的系统对不上。
README 里的官方链接真正的官网地址应该写在 README 里,和你搜到的一致。
发布页的下载来源只从项目的 Releases 页下载,不从网盘、第三方搬运站、所谓「破解版」下载。

「破解版」客户端和模型里夹带的东西防不胜防。省下的那点钱,换来的是一个可能读你文件、传你数据的程序。

一个项目页面上有几块固定区域,认识它们会省很多时间:

现在就做 ① 注册一个 GitHub 账号,完成邮箱验证,并换一个窗口重新登录一次。
② 打开任意一个你感兴趣的项目的 Issues 页,搜一个关键词,看别人怎么描述问题、作者怎么回复。
③ 打开 Settings → Applications → Authorized OAuth Apps,看看现在有多少个应用拿到过你的授权。
④ 在自己的练习目录里跑一次 git status,确认你能读懂它现在告诉你什么。

自测

1. 提交了但没推送,别人能看到吗?
看不到。提交只写进本机的 .git,只有执行 push 之后内容才到 GitHub 上。反过来说,只提交不推送,硬盘一坏历史就没了。
2. 我把带密码的文件删掉,再提交一次,密码就安全了吗?
不安全。旧的那次提交里密码还在,翻历史就能看到。真正的止损是立刻去服务商那里作废这个密码、换新的;清理历史是之后的事,而且不能保证别人没有已经拉取过。
3. 在别的网站点「用 GitHub 登录」,我把 GitHub 密码给它了吗?
没有。GitHub 弹授权页,你同意后它给对方一个凭证,对方拿不到你的密码。但要读一眼授权页写的是什么权限,申请仓库读写权限意味着它能改你的代码。
4. 撤销某个应用的授权,等于注销那个网站的账号吗?
不等于。撤销只是让那个网站不能再通过 GitHub 确认你的身份、访问你的 GitHub 数据;你在那个网站上的账号还在,它之前保存的数据也不保证被删除。