基本概念
Git 是一个分布式的版本控制系统,那么与之相对的呢就是集中式
- 集中式
(像我们熟悉的SVN,将所有的代码统一管理,然后使用通过发布对应的版本来进行项目的迭代,通常用于公司局域网) - 分布式
(然后就是接下来的Git 了, 那么他是一个分布式的一个版本控制系统)
平常,我们最多的流程大致如下
- 克隆远程仓库,生成工作区副本 git clone ...
- 进行工作区的修改,并生成本地仓库版本 git commit
- 将本地版本推送至远程托管库 git push
工作区,缓存区(索引区),本地版本库
工作区: 说白了就是我们能看的到的目录
缓存区: git add <file> 这个命令就是将我们的文件让如缓存区
本地版本库: git commit 将缓存区保存至本地版本库
下面就是整个抽象画的一个图

分支
再来说分支,因为上面有副这样的图 , 先说说个人理解 ... 分支这里还没去细看, 但是我认为是这样子的
首先第一步, 在本地版本库中复制当前分支的版本信息,也就是创建出来了另外一个分支 ,当你进行切换到这个新建的分支的时候,将HEAD 指向这个新建的分支 , 由于你只更改了本地版本库, 也就无需再讲工作区和缓存区中的东西添加并提交

标签
标签呢,菜鸟给出的解释就是,留个标签给commit 信息可以更加快速的知道提交信息的用途, 所以呢,可以给指定提交版本或者当前版本添加一个标签, 之后如果说要直接回退到那次提交,那我们就可以通过标签来快速定位
git tag 列出所有的标签
git tag -a 在HEAD打个标签,并增加注释
git tag -d <tagname> 删除某个标签
git tag <tagname> <versionNumber>以上呢是标签的常用命令, 例如 我们提交了N个版本 , 由于我们加了标签,那我们可以直接退回到此标签提交
// 例如 我这里有 v_1 , v_2 标签 , 那我们就可以使用 git reset v_1 回到v_1版本 命令
常用命令,方便以后参考
git init 初始化当前git 目录
git status 查看当前管理的一些状态
git log 查看日志
--oneline 单行浏览
git reset <versionNumber | tagname> 版本库回退到某个版本
git rm <fileName> 将文件从工作区和暂存区删除中删除
--cached 只从暂存区中删除 , 工作区保留
git checkout . 或 git checkout --file <fileName> 将从缓存区替换工作区(--file 表示部分文件)
这里可以调整 以工作区优先还是 缓存区优先, 如果工作区优先就git add , 缓存区优先则 以上方式
工作区 <--- 暂存区
git checkout HEAD . 或者 git checkout HEAD <fileName> 和上面基本相同,唯一不同是, 整个以版本库为重点
并且是HEADs所在的master分支
(工作区,暂存区) <---- 当前master版本
--------------------------分支-----------------------------------------------
git branch <branchName> 创建一个分支
git checkout -b <branchName> 创建一个分支并且切换过去
git merge <branchName> 当前分支与此分支进行合并
git branch -b <branchName> 删除一个分支
git merge -d <branchName> 合并一个分支并且删除
-------------------------End ---------------------------------------------------
git diff 进行比对
-------------------------标签---------------------------------------------------
git tag 查看所有标签
git tag <tagName> 在当前版本库打上一个标签
git tag <tagName> -a 在上面基础上加上注释
git tag <tagName> <versionNumber> 在指定版本上打标签
git tag -d <tagName> 删除某个标签
工作流程图
团队协作

多团队协作
