Git分支

作者: 你weixiao的时候很美 | 来源:发表于2020-06-19 10:08 被阅读0次
    一: 分支的简介

    git保存的不是文件的变化或者差异,而是一系列文件的快照。

    1.提交

    在提交的时候,git会保存一个提交对象。

    提交对象包含:

    • 提交信息(作者姓名,提交输入的信息等),
    • 指向父对象的指针,
    • 指向树对象的索引。

    树对象(树形的结构)包含:

    • 保存着文件快照的blob对象。
    • 目录结构
    git提交.png
    2.分支

    分支的本质是指向提交对象可变指针,仅仅包含了它所指向的提交对象的校验和。
    每次提交,可变指针会移动,指向最新的提交对象。

    2.1 创建分支
    创建分支就是创建一个可移动的新的指针

    git branch [branchName]  只创建了一个分支,而不切换过去,不常用
    

    2.2 分支切换和当前分支
    Git有一个名为HEAD的特殊指针,它当前指向的分支就是当前分支。

    分支切换就是HEAD指针从一个分支指向另一个分支。
    切换分支会修改工作目录,git会自动增删改文件以确保工作目录和切换到的分支一模一样。

    git  checkout [branchName]  切换分支
    

    创建并切换到新分支,常用。

    git  checkout -b  [newBranchName]
    
    3.分支的合并

    3.1 Fast-forward合并:

    • 当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进。
    • 此类合并没有提交。

    3.2三方合并:

    • 如果两个合并的分支从一个较早的地方分叉开来,GIt会使用两个分支的快照和二者的工作祖先做一个简单地三方合并。
    • Git会根据三方合并的结果做出一个新的快照,并自动创建一个新的提交指向它,此次提交称为合并提交,它有不止一个父提交。

    3.3冲突
    如果在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。

    此时 Git 做了合并,但是没有自动地创建一个新的合并提交 (这里很重要),此时的状态是合并了代码,但是没有合并干净,也没有提交。

    此时需要解决冲突,标记已经解决(add), 提交(commit)。

    二:远程分支

    1 定义:远程跟踪分支是远程分支状态的引用。

    • 以 remote/branch 形式命名,比如 origin/master
    • 他们是你不能移动的本地引用

    2 抓取服务器仓库数据,并更新本地仓库。 移动远程跟踪分支指针指向新的位置。

    git fetch origin 
    

    git fetch 只是抓取了远程仓库数据并更新了本地仓库, 如果远程仓库有新的远程分支origin/branch_fix,在本地并没有创建一个新的本地分支branch_fix,只有一个不可修改的 远程跟踪分支指针origin/branch_fix。

    3 推送到某个本地分支 到远程服务器某个分支 不常用

    git push origin branch_fix  和下边一句含义相同
    git push origin refs/heads/branch_fix : refs/heads/branch_fix
    
    git push origin  [localBranchName] : [remoteBranchName]
    

    4.删除远程分支

    git push origin --delete  [branchName]
    
    三:跟踪分支 最常用

    1.定义 : 从一个远程跟踪分支检出一个本地分支会自动创建所谓的“跟踪分支”

    当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支

    2.从远程跟踪分支检出本地跟踪分支

    git checkout -b branch_fix  origin/branch_fix
    git checkout --track  origin/branch_fix
    

    3.设置已有的本地分支跟踪一个远程分支

    git branch -u origin/branch_fix
    git branch --set-upstream-to origin/branch_fix
    

    相关文章

      网友评论

          本文标题:Git分支

          本文链接:https://www.haomeiwen.com/subject/hcpdcctx.html