zoukankan      html  css  js  c++  java
  • Git基础使用

    前言


    Git是版本控制系统,由Linux开源社区开发。与其他的版本系统相比,Git更加快速,便捷。主要是Git存储的是快照,而非差异性比较。并且绝大数操作都是访问本地文件和资源,没有网络时也可以直接提交,等到有网时再推送到远程仓库。对于文件的历史也是直接拉取本地,瞬间完成。

    背景


    解决一下场景遇到的问题
    业务:个人信息的需求。
    Coder:码码码码码码。。。(进行中)
    安全部门:怎么档案的信息改下id,能看到别人的档案,赶紧修复。
    Coder:个人信息还没做好,档案修复和个人信息文件又存在交叉,不能提交,该怎么办?

    文件状态变化周期


    1.png
    文件的状态只有两种:未跟踪(untracked)和已跟踪(unmodified、modified、staged)

    1. 工作目录下创建new.php文件

    2.jpg
    执行 git status,可以发现new.php还没有被git跟踪

    2. 跟踪new.php文件

    3
    执行git add . 后,文件被放入暂存区(staged)

    3. 修改new.php的内容

    4
    git status 后,出现 Changes not staged for commit,说明跟踪的文件已被修改,还未放入在暂存区

    4. 暂存修改的new.php

    5
    git add 是个多功能的命令,既可以将未跟踪的文件放入暂存区,也可以将修改的文件放入暂存区,当然它还有其他的一些功能。从上面的图我们可以看到,修改的文件被放入到暂存区了。

    5. 提交,生成快照

    6
    git commit -m "add new" 后,已生成此次的快照,校验和为 dd90005
    note : git commit -a -m ''add new", 可以跳过git add

    6. 删除提交

    7
    git rm后,重新提交,文件在工作目录和暂存区中都被删除。

    分支

    git的原理由5个对象实现,想知道具体的可以搜下资料看看,这里主要讲如何解决背景出现的问题。
    git log --oneline --decorate --graph --all //先执行此命令查看工作目录所处的分支
    18

    根据上图可以看到工作目录处于master分支,HEAD指向master分支,流程图:
    8

    1.个人信息需求

    git branch issue //此时HEAD还是指向master
    创建issue分支,这点很重要,当有新需求过来的时候,一定要创建自己的分支。保持主分支为原样。
    git checkout issue //切换到issue分支,HEAD指向issue
    9

    流程图:
    10

    2. 码码码码码码

    在issue分支下,工作,并提交到暂存区
    11

    可以看到生成了校验码为c7abbef的快照,流程图:
    12

    3. 档案信息修复

    git checkout master //切换master主分支,HEAD指向master
    git branch issue2 //创建issue2分支,HEAD指向master
    git checkout issue2 //HEAD指向issue2
    修复bug,同提交,产生3a59570快照。
    此时流程图:
    13

    git checkout master //切换master分支
    git merge issue2 //issue2分支的内容合并到master分支
    流程图:
    14

    此时的合并只是将master指针前移。
    git branch -d issue2 //删除issue2分支

    4. 继续个人信息

    git checkout issue //切换issue分支
    码码码码码。。。。
    功能实现继续提交
    流程图:
    15

    git checkout master //切换到master主分支
    git merge issue //合并issue分支到master主分支

    16

    此时的合并就不是简单的将master指针前移,因为这两个分支的共同分支是9ffb7ee,而不是3a59570,此次合并做了两次操作,一是将94517a9、9ffb7ee、3a59570的结果做了一次新的快照,二是对结果做了一次新的提交10af497。

    注:此时如果有文件冲突,出现 CONFLICT (content): Merge conflict ,可以到冲突的文件中,修改冲突的内容,再次 git commit -a -m "fix confilct"

    关于git的使用就讲到这了,上面讲的这些也只是git的基本使用。
    当我们再去深入的了解的话,就会发现用git也可以实现运维系统发布那一套流程,每一个开发者将自己私有库的更新发布到自己的公共库上,再由管理者去拉取开发者的公共库更新,管理者发现没有问题,再推送到主仓库。

  • 相关阅读:
    删除当前目录下除了system目录的其他文件
    单例设计模式
    系统工程师
    字符串翻转
    教育
    得到b相对于a的路径
    一段处理事务的代码
    搭讪
    win 8 ,vs2011 编程环境下,动软生成器无法连接上 sql server 2008 r2
    从asp网站编程转行到asp.net网站编程的过程
  • 原文地址:https://www.cnblogs.com/SexyPhoenix/p/11769640.html
Copyright © 2011-2022 走看看