《pro git》读书笔记(二)

第三章 git分支机制

在git中创建和切换分支非常迅速,通过
git branch <new-branch-name> 创建一个新的分支,git checkout <new-branch-name>会切换到新的分支。

一般来说,我们会管理四种类型的分支,一种是master分支,代表线上代码。 一种是develop分支或者release分支,表示下一个版本的代码。另外还有两种是feature分支和hotfix分支,分别表示功能代码,以及线上bug紧急处理代码。

因此我们会基于master分支,创建develop分支,feature分支,hotfix分支。hotfix分支最终会合并到master分支和develop分支上,feature分支会合并到develop分支上, 当develop分支达到稳定版本的时候,就会合并到master分支上。

合并分支我们使用git merge. 例如我们当前有个feature/sticky分支,我们想将它合并到develop分支上去,我们会使用一下代码:

git checkout develop
git merge feature/sticky

如果两个分支的代码有冲突,也就是修改了同一部分的代码的话。首先应该解决冲突代码,之后使用git add和git commit命令提交,合并完成。

若我们想让我们的本地分支跟踪远程仓库的分支,可以使用git checkout --track origin/develop

并且如果我们使用 git checkout的时候,该分支没有创建,并且和某个远程分支名一样,git会自动创建跟踪分支。

如果想要删除某个远程分支,使用git push origin --delete <branch-name>

分支合并会对两个分支上的最新提交的快照以及他们的最近的祖先进行一次三方合并。
除此之外,我们还可以使用git rebase变基. git rebasee 时将一个分支的提交应用到另一个分支上,它会寻找两个分支的最近祖先,然后将从最近祖先之后的提交全部应用到另一个分支上。

合并和变基的区别就是,合并会将两个分支的末端合并在一起; 变基是将在一个分支上的工作在另一个分支上按顺序重现。

第四章 git服务器

git支持四种协议: 本地协议, HTTP协议,SSH协议, 以及Git协议

1.本地协议: 使用本地协议的话,远程仓库就是本地磁盘的一个目录。大家都登录同一台计算机上,使用的是一个共享的本地文件系统,这样的话,每个成员就能基于git仓库克隆,推送以及拉去数据。

优点: 简单易用,通过文件权限和网络权限,进行团队合作。

缺点: 仓库放到同一台计算机上容易被破坏,并且共享文件系统不容易设置,本地网络以外的用户很难访问。

2.HTTP协议: git有两种不同的HTTP通信模式。一种叫智能HTTP协议以及非智能HTTP协议。

智能HTTP协议使用标准的HTTP/S(443)端口通信。可以使用HTTP协议的各种身份验证机制。

非智能HTTP协议为只读的形式。

智能HTTP协议优点:使用同一个URL就可以推送和拉去数据。

智能HTTP协议缺点:难以搭建,并且当启用身份验证推送数据比较麻烦。

3.SSh协议:SSH协议是常见的传输协议,很容易设置和使用。但是不能实现对仓库的匿名访问。

4.Git协议:Git自带的一种特殊的守护进程,监听9418端口,提供类似于SSH协议的服务,但是没有用户验证机制。

-->