Git笔记 (6)

开源许可证有上百种,这里说说最流行的六种:GPL、BSD、MIT、Mozilla、Apache和LGPL如何做选择,阮一峰在如何选择开源许可证一文中给出了一张图,直观精确,就是下图:

image_1clliek4fdgblqa1j59118evlvlp.png-396.5kB


那么如何给自己的仓库加上LICENSE呢?很简单,点击仓库中的creat new file,然后写LICENSE.md,选择choose a license template

image_1cllio1dr1lt01no116he48u1eaem6.png-30.9kB


然后选择MIT License,再点击Review and Submit,最后点击commit change就可以了。

image_1clliq1hq13ah1slpjmc1pjfsqumj.png-171.3kB


我们就可以在自己仓库中看到MIT协议了

image_1clliub5hgoj76p1jdh5jb74hn0.png-79.7kB

6. 分支的使用

有人称分支是git的必杀技,正是因为这一特性,git从众多版本管理系统中脱颖而出。git鼓励多次使用分支和合并。精通分支,将对你的版本管理十分便捷和高效。进行分支之前,先讲git是如何保存数据的。

Note: 为了节省工作量,分支中有的图是截的书上的图,图中的校验和会与实际的校验和不同,这点注意一下就好。

6.1 git保存数据方式与分支简介

与一些版本控制软件不同,Git保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照。如下图所示

8.png-1754.4kB


在进行提交操作时,Git 会保存一个提交对象(commit object)。知道了 Git 保存数据的方式,我们可以很自然的想到,该提交对象会包含一个指向暂存内容快照的指针。但不仅仅是这样,该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针。

首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象,而由多个分支合并产生的提交对象有多个父对象。

为了更加形象地说明,我们假设现在有一个工作目录,里面包含了三个将要被暂存和提交的文件(文件需要自己动手在playground目录新建)。暂存操作会为每一个文件计算校验和,然后会把当前版本的文件快照保存到Git仓库中(Git使用blob对象来保存它们),最终将校验和加入到暂存区域等待提交:

$ git add README test.rb LICENSE $ git commit -m 'branch note begin'

现在,Git仓库中有五个对象(忽略dd文件夹):三个blob对象(保存着文件快照)、一个树对象(记录着目录结构和blob对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。具体结构如下图:

Git笔记


9.png-2520.8kB


做些修改后再次提交(两次):

$ echo "print("1")" >> README $ git commit -am "add print("1") into README" warning: LF will be replaced by CRLF in README. The file will have its original line endings in your working directory. [master 326dd0b] add print(1) into README 1 file changed, 1 insertion(+) $ echo "print("2")" >> README $ git commit -am "add print("2") into README" warning: LF will be replaced by CRLF in README. The file will have its original line endings in your working directory. [master ebc9b45] add print(2) into README 1 file changed, 1 insertion(+)

两次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。见下图:

image_1cle5pciidfc1hjm1nvm1v5q1tvm15.png-137.3kB


Git的分支,其实本质上仅仅是指向提交对象的可变指针。Git的默认分支名字是master。在多次提交操作之后,你其实已经有一个指向最后那个提交对象的master分支。它会在每次的提交操作中自动向前移动。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppgpw.html