乐趣区

关于git:Git第三章节分支

分支

1.1 概述
1.2 新建和合并
1.3 治理分支
1.4 近程分支
1.5 分支的扩大

1.1 概述

Git 中提交时,会保留一个 commit 对象,该对象蕴含一个指向暂存内容快照的指针,蕴含本次提交的作者等相干的从属信息,蕴含零个或者多个指向该提交对象的父对象指针;首次提交时没有间接先人的,一般提交有一个先人,由两个或者多个分支合并产生的提交则有多个先人。

1.1.1 示例

在工作目录中有三个文件,筹备将他们暂存后提交。暂存操作会对每一个文件计算校验和 (SHA- 1 哈希串),而后把以后版本的文件快照保留在 Git 仓库中 (Git 应用 blob 类型的对象存储这些快照),并将校验和退出暂存区域。当应用 git commit 新建一个提交对象前,Git 会先计算每一个子目录的校验和吗,而后在 Git 仓库中将这些目录保留为树 (对象);之后 Git 创立的提交对象,除了蕴含提交信息外,还蕴含了指向整个树对象的指针。这样未来须要的时候,重现此次快照的内容了。

    $ git add text1.md text2.md tesxt3.md
    $ git commit -m "init desc"

当初仓库中有了五个对象:三个文件示意快照内容 blob 对象;一个记录这目录树内容和其中各个文件对应 blob 对象索引的 tree 对象;还有就是一个蕴含指向 tree 对象的索引和其余提交信息源数据的 commit 对象。

批改后再次提交,这次提交的对象会蕴含上一个指向上次提交对象的指针。两次提交后变成上面这样。

Git 中的分支,其实实质上仅仅是个指向 commit 对象的可变指针。Git 会将 master 作为分支的默认名字。若干次提交当前,其实曾经有一个指向最初一次提交对象的 master 分支,他在每次提交的时候都会向前挪动。

1.1.2 创立分支

应用命令 git branch 创立分支

    $ git branch testing

Git 保留着一个名为 HEAD 的特地的指针。在 Git 中他是一个指向你正在工作中的本地分支的指针。运行 git branch 命令,仅仅是建设了一个新的分支,然而不会主动切换到这个新建的分支中。

1.1.3 切换分支

应用命令 git checkout 切换分支:

    $ git checkout testing

1.2 新建和合并

应用命令创立并切换分支

    $ git checkout -b < 分支名称 >

合并分支, 将开发分支合并到 master 主分支中

    $ git checkout master
    $ git merge < 开发分支 >

删除分支

    $ git branch -d < 分支名称 >

解决抵触, ======= 隔开的上半局部,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支 ) 中的内容。下半局部是在开发分支的内容。

    <<<<<<< HEAD:index.html
    <div id="footer">contact : email.support@github.com</div>
    =======
    <div id="footer">
    please contact us at support@github.com
    </div>
    >>>>>>> iss53:index.html

1.3 治理分支

列出所有的分支

    $ git branch

列出各个分支最初一个提交对象的信息

    $ git branch -v

1.4 近程分支

近程分支是对近程仓库中分支的索引。通过 git fetch origin 来同步近程服务器上的数据到本地。

推送本地的开发分支到近程

    $ git push origin < 开发分支名 >

删除近程分支

    $ git push origin :< 开发分支名 >

1.5 分支的扩大

git rebase ing

退出移动版