阅读 10

【新技能】GIT原理详解与应用

【新技能】GIT原理详解与应用
  • 整理自掘金小册《GIT原理详解与应用》 感谢 扔物线 大佬的小册资源
  • 整理者:聪明的傻孩子 微信号:Crazy13983627202
  • 一、版本控制系统(CVS ,Version Control System)
    • 版本控制,意思就是在文件的修改历程中保留修改历史,让你可以方便地撤销之前对文件的修改操。
    • CVS系统三要素
      • 版本控制、主动提交、中央仓库
    • 中央版本控制系统
      • 功能:保存版本历史、同步团队代码
      • 主项目工程师:负责发布维护中央仓库 #案例分析
      • 其他工程师:获取中央仓库到本地,开发并提交
    • 分布式版本管理系统(DCVS)
      • 主工程师:构建代码(init),提交本地仓库(commit),提交到远程仓库(push)
      • 其他工程师:克隆远程仓库代码到本地仓库z(clone),提交本地仓库(commit),推送远程仓库(push)
      • DCVS优缺点 #自我思考
        • 优点:
          • 1. 响应速度快,便于维护,不依赖于网络
          • 2. 便于回溯、能细化提交
        • 缺点:
          • 1.初次获取项目时非常耗时
          • 2.操作相比CVS更复杂,命令行更多
          • 3.占用得存储空间比较大(本地仓库)
  • 二、GIT新手上路
    • 下载GIT客户端(略)
    • 克隆
      • git clone url地址
    • 本地文件.git.
      • 用来保存GIT相关配置
    • 日志查看
      • git log
    • 获取当前文件状态
      • git status
      • tip:代表当前项目处于master分支,仓库与远程仓库相同
    • 添加文件
      • git add ./文件名
    • 添加文件
      • git commit -m 日志
    • 推送到远程服务器
      • git push
    • 获取远程服务器资源
      • git pull
  • 三、团队合作工作模型
    • 流程:add --->commit---->push----->(push失败)pull---->push(循环)
  • tips:以上为GIT基础部分
  • 四、进阶 一:HEAD、master 与branch
    • 引用:HEAD ->master,orgin/master,origin/HEAD
      • HEAD:当前 commit 的引用,当前处于的commit分支,这里是master分支branch
      • orgin/master 远程master分支
      • origin/HEAD 最新的commit
    • commit是指向每次提交得数据,为SHA-1 校验和。就是上图黄色的部分。不重复。
    • Branch 分支
      • master为默认分支,新建项目或clone项目默认指向master分支
      • 原则:所有的 branch 之间都是平等的,只是master为主要分支,但是没有特殊性
      • 创建新branch
        • git branch 分支名 :在当前的commit处(也以当前branch作为基础)新建一个分支
        • demo:git branch feature1(结构如上图)
      • 切换分支
        • git branch 分支名
        • demo:git branch feature1
      • 删除 branch 
        • git branch -d/-D 分支名( 后者为强制删除)
        • tips:无法删除HEAD所在的分支,必须切换成其他分支才可以
  • 五、进阶二:Push的原理
    • 1.push 是把当前的分支上传到远程仓库,并把这个 branch 的路径上的所有 commit s也一并上传
    • 2. push 的时候,如果当前分支是一个本地创建的分支,需要指定远程仓库名和分支名,用 git push origin branch_name 的格式,而不能只用 git push ;或者可以通过 git config 修改 push.default 来改变 push 时的行为逻辑。
    • 3. push 的时候之后上传当前分支,并不会上传 HEAD ;远程仓库的 HEAD 是永远指向默认分支(即 master )的。
    • 案例:例如,我现在的本地仓库有一个 master ,它超前了远程仓库两个提交;另外还有一个新建的 branch 叫 feature1 ,远程仓库还没有记载过它。具体大概像这样:
      • 远程仓库:
      • 本地仓库:
      • 这时我执行 git push ,就会把 master 的最新位置更新到远端,并且把它的路径上的 56 两个 commit s 上传,此时远程仓库的结构将如下:
  • tips:以上就是进阶内容。
关注下面的标签,发现更多相似文章
评论