Git的小白又没那么小白的东西| 青训营笔记

83 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

Git 的下载

先把 Git 的下载搞定了,对于 win 最简单就是直接下载 Gin For Windows,至少直观,然后因为速度的原因,可以从华为的镜像下载。

Index of git-for-windows-local (huaweicloud.com)

Git 的基本操作

照惯例进行一下详细介绍。

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持1

说白了 Git 就是管理代码版本的程序,所以 Git 的基本操作就是作为“版本控制”的基本操作。 |600

  1. 创建仓库: git init
  2. 下载仓库: git clone
  3. 暂存提交代码: git add
  4. 不存提交代码: git commit
  5. 回滚仓库: git reset

Git 的分支逻辑

因为开发是“分布式” 的,就决定了代码不能存在于一个唯一的地方,那么就出现了同一个项目在不同地方的不同代码存在不同的特点。
Git 的解决方案是“分支”(branch) 像是我们的项目中,可以看到项目存在 4 个活动分支(Avtive branches), 一个默认分支 (Default branch)。 |300 这里面的每个分支都可以是一个新的线路。同时由于每个人都根据这个仓库开发,所以每个人都 Fork 了这个分支,可以看到一下两张图的对比中,第一张是项目仓库的分支提交记录,第二张是我本地仓库的分支提交记录。区别就是是否存在我本地的提交记录|600 |600

Fork & Pull request

由于我本人是Fork 的项目,所以算是参与者,而不是所有者。所以不能直接提交程序到整个项目中。
想要将参与者的修改同步到整个项目中,涉及到的内容就是pull request|600

Git 的pull request可以理解为request to pull请求项目所有者pull修改后的Fork

pull request由参与者提出,由所有者审批,审批后Fork代码并入branch |600

Branch

前面提到的 Branch 就相对容易理解,Branch 本身可以当做是对于不同模块的分布开发,比如前面提到的四个活动分支,就是分别对 interaction, dev, social, base 四个模块的开发,各个小组/人完成对于模块的开发之后,一起并入整个项目的主分支 master 就可以了。

总结

像是这份简明指南2提到的,从底层到的顶层对于整个项目进行拆分。 以下是本地仓库环境,最上层是暂存区的最新文件

  • 最底层的开发环境是:工作目录,是面向开发的原始文件
  • 上一层的存储是:暂存区,是临时保存改动的地方
    • 和工作目录沟通用 git add
  • 暂存区的最新改动是:Head, 指向最后一次提交的结果。
    • 确认暂存区全部改动用 git commit
    • 回滚 Head 代码到工作目录用 git checkout

以下是远端仓库环境,最上层是整个仓库

  • 开发对应的模块:分支,是远端仓库保存的模块。
    • 提交整个仓库到分支是:git push origin <branch>.
    • (反之) 分支变化反映到仓库是: git pull
    • (可以理解为什么) 参与者同步是: pull request
  • 整个项目整体是:仓库,是全部文件储存的部分。
    • 仓库整合全部分支是: git merge <branch>

最后补一个:可以给对应的 commit 设定一个 tag,例如: git tag 1.0.0 1b2e1d63ff,标记某次提交的代码,赋予特别意义。

Footnotes

  1. Git 教程 | 菜鸟教程 (runoob.com)

  2. git 简明指南 (runoob.com)