如何开始合作——从Git到Github

Git本地保存

Git最常见的用途是为了保存Local的代码改动。

1
2
3
git init
git add <filename>
git commit -m "this is a message describing your commit."

这样我们就完成了一次本地的保存操作。

git init命令会在当前目录下生成一个隐藏目录.git/。Git 初始化了一个对象数据库 (Object Database)。从此以后,这个文件夹里的任何变动,都有资格被 Git 监控。

git add命令会将文件从工作区移动到暂存区,在实际的开发场景中,尤其是多人合作的项目中,我们一般会使用git add <filename>的命令,这是“精细化提交”的行为之一。

git commit命令会将暂存区的所有内容打包成一个永久的快照,存入 Local Repository (本地仓库)

值得说的是,这里我们就已经触及了Git的三大工作区域,分别是:

  • 工作区(Working Directory):你的代码,保存文件(Ctrl+S)的地方,文件会处于未追踪(Untracked)或者已修改(Modified)状态,常见的IDE已经支持在内部显示这两种状态。
  • 暂存区/索引(Staging Area / Index):这是 Git 独有的概念。它是一个“缓冲区”,用于准备即将提交的文件快照。
  • 本地仓库(Local Repository):这是存储在 .git 文件夹里的数据库。一旦进入这里,文件就有了永久的历史记录。

Git远程连接

建立连接

1
git remote add origin <URL>

这里我们注册了一个远程上游(Remote Upstream)。简单地说,我们给本地仓库配置了一个远程的目标地址。

值得一提的是,origin本身并不是一个“魔法词汇”,其实它只是一个别名(Alias)。你可以将其命名为github,backup,my-server都行,推荐使用origin。设置别名的目的是以后我们都不用打一长串的URL地址,而是只需要origin即可。

分支同步与推送

1
git push -u origin main

通过这个命令,我们将本地仓库的commit对象,通过网络传输到github的远程仓库(Remote Repository)

这里的参数 -u 是上游(Upstream)的缩写。它建立了一条持久化的追踪关系,告诉git,我本地的main分支对应着远程origin的main分支。这样,我们下次只需要输入git push,git就自动知道要把谁推给谁。

多人合作

安全与身份

  1. GPG 签名:
    • 在本地电脑上我们可以任意输入用户名,比如说
      1
      git config user.name "Linus"
      这样你就变成Linux之父,这样很酷,但是如果以这个身份提交代码,别人看见的就是Linus与他们进行合作。
    • GPG Key 是什么? GPG (GNU Privacy Guard) 是一种加密技术。它生成一对密钥:一把私钥(在你电脑里),一把公钥(上传给 GitHub)。
    • 对于工业界的团队合作项目,GPG Key是一个常见的配置,用来说明“你是你”。Github上面有些开源大神的头像旁边也会有一个Verified标签,这也是GPG签名。
  2. 分支保护:
    • GitHub仓库管理员会将main分支锁定。此时,我们之前的push就不起作用,只有通过审核的代码会进入main分支。一般来说,审核包括GitHub的语法检查和团队其他成员的review。

开发

既然main分支已被锁定,我们的开发就只能在为了任务而创建的特性分支(Feature Branch)

  1. 同步上游:这是你开工的第一件事,拉取最新的main。
1
2
git checkout main 
git pull origin main # 保持地基是最新的
  1. 切分支:我们需要良好的命名习惯,方便我们进行debug,以下是一个例子。
    • type: 对应任务类型,比如说开发新功能的feature,修改bug的fix等。
    • ticket-id: 对应工单号,这样方便我们查询这段代码的需求文档。
    • description: 对应描述,一眼便知这段代码的作用。
1
2
# 规范示例:type/ticket-id/description 
git checkout -b feat/USER-101/login-page
  1. 频繁提交,延迟推送:经常在本地commit,比如说每15min一次。但是这些记录不能污染远程仓库。

发起PR和审查*

在个人项目或 Demo 中,我们往往习惯直接合并代码。但在工业界,这是绝对禁止的。现在简要地介绍一下这一部分。

  1. 发起请求:在github上点击”New Pull Request”。
  2. 机器检查:在工业界,某些企业会有机器人把你的代码进行测试,你可以在github下方看见check标志。
  3. 代码审查:
    • 自查:在merge之前最后看一眼自己的代码。
    • 他人审查:其他团队成员进行审查,一致通过以后可以merge。

合并

将你的代码合并到远程仓库。

  1. 在GitHub界面中点击“Squash and Merge”。
  2. GitHub会将10个commit压缩(squash)成一个commit并合并进去,这样一个开发功能只对应一个点。

清理

合并完成之后,你的特性分支就应该被清理。

  • GitHub:会自动提示“Delete branch”。
  • 本地:
1
2
3
4
git checkout main 
git pull origin main # 把自己刚才合并的代码拉下来
git branch -d feat/USER-101/login-page # 删除已合并的分支
git branch -D feat/USER-101/login-page # 强制删除本地未合并的分支(慎用)

如何开始合作——从Git到Github
https://www.ipogermay.cn/posts/如何开始合作——从Git到Github.html
作者
Principia
发布于
2025年12月5日
许可协议