git 的一些学习

330 阅读3分钟

基本概念

Git 是一个分布式的版本控制系统,那么与之相对的呢就是集中式

  1. 集中式
    (像我们熟悉的SVN,将所有的代码统一管理,然后使用通过发布对应的版本来进行项目的迭代,通常用于公司局域网)
  2. 分布式
    (然后就是接下来的Git 了, 那么他是一个分布式的一个版本控制系统)

平常,我们最多的流程大致如下 

  1. 克隆远程仓库,生成工作区副本  git clone ...  
  2. 进行工作区的修改,并生成本地仓库版本 git commit 
  3. 将本地版本推送至远程托管库  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> 删除某个标签   


工作流程图  

团队协作




多团队协作