工作区

就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository)

工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEA**D**。

使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

创建远程仓库

第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
ssh-keygen -t rsa –C “youremail@example.com”, 由于我本地此前运行过一次,所以本地有,如下所示:

  1. ![](https://cdn.nlark.com/yuque/0/2020/png/516637/1582803321697-c07b6b53-779b-4f19-bca8-81f97dc89e2a.png#align=left&display=inline&height=141&originHeight=169&originWidth=753&size=0&status=done&style=none&width=630)<br />id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第二步:登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。
基本概念 - 图1
点击 Add Key,你就应该可以看到已经添加的key。
基本概念 - 图2

连接本地仓库和远程仓库

现在的情景是:我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
首先,登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。如下:
基本概念 - 图3
在Repository name填入testgit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:

  1. 目前,在GitHub上的这个`testgit`仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

分支

  1. 先说分支的作用:分支不是GIT的专利,早在CVS时代就有了。分支对于团队来说作用太大了。比如说一个项目现在是1.0版,那么开发团队可能要同时进行1.1版和2.0版的开发,这样代码就会出现较大分歧。这时候就需要用到分支了,不同的任务组在不同的分支上开发,互相之间不会影响。再比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。

再说说分支在GIT上的特点:GIT的技术可以说是非常强大,说一切开发都依赖于分支一点都不过分。一般项目的master分支都是稳定的代码,可以直接发布或者被项目之外的人使用。新特性和BUG修改都在不同的分支上进行开发和测试。这样规范了整个软件的开发流程。分支之间的互不影响这种特性可以增加团队合作的效率。GIT分支的另外一个重要特性就是可以合并不同软件仓库(fork)的分支。大体就是:开发团队有一个主软件仓库,开发者可以fork这个仓库,相当于克隆了一个私有的软件仓库,然后开发者就可以在自己的软件仓库中建立分支并开发测试,测试完毕之后,可以向主软件仓库提交merge request,这样新开发的特性就会被合并到主软件仓库的某个分支中。这种特性极大地推动了开源项目,多年前参加开源项目都是神话,自从GIT出现后,每个人都可能成为开源项目的贡献者,就是基于这种特性(请参照Github的pull request,和merge request是同一个东西

标签

1.官方解释

Git tag 给当前分支打标签

  1. 个人解释

其实道理和commit 的commit-sha1有些相似,其实就是给当前的版本做个标记,以便回退到此版本。如果使用commit-sha1,大家都记不住那条冗长的sha1码,所以用tag标签来做记录

发布一个版本时,我们通常先在版本库中打一个标签(tag)