这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
Git 的下载
先把 Git 的下载搞定了,对于 win 最简单就是直接下载 Gin For Windows,至少直观,然后因为速度的原因,可以从华为的镜像下载。
Git 的基本操作
照惯例进行一下详细介绍。
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持1。
说白了 Git 就是管理代码版本的程序,所以 Git 的基本操作就是作为“版本控制”的基本操作。
- 创建仓库:
git init - 下载仓库:
git clone - 暂存提交代码:
git add - 不存提交代码:
git commit - 回滚仓库:
git reset
Git 的分支逻辑
因为开发是“分布式” 的,就决定了代码不能存在于一个唯一的地方,那么就出现了同一个项目在不同地方的不同代码存在不同的特点。
Git 的解决方案是“分支”(branch)
像是我们的项目中,可以看到项目存在 4 个活动分支(Avtive branches), 一个默认分支 (Default branch)。
这里面的每个分支都可以是一个新的线路。同时由于每个人都根据这个仓库开发,所以每个人都
Fork 了这个分支,可以看到一下两张图的对比中,第一张是项目仓库的分支提交记录,第二张是我本地仓库的分支提交记录。区别就是是否存在我本地的提交记录。
Fork & Pull request
由于我本人是Fork 的项目,所以算是参与者,而不是所有者。所以不能直接提交程序到整个项目中。
想要将参与者的修改同步到整个项目中,涉及到的内容就是pull request。
Git 的
pull request可以理解为request to pull即请求项目所有者pull修改后的Fork
pull request由参与者提出,由所有者审批,审批后Fork代码并入branch
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,标记某次提交的代码,赋予特别意义。