资料参考:《猴子都能懂的Git入门》
入门篇
一、Git基础
1. Git的数据库分为远程数据库和本地数据库的两种。
| 远程数据库 | 配有专用的服务器,为了多人共享而建立的数据库。 |
|---|---|
| 本地数据库 | 为了方便用户个人使用,在自己的机器上配置的数据库。 |
2.修改记录的提交
-
不同类别的修改 (如:Bug修复和功能添加) 要尽量分开提交,以方便以后从历史记录里查找特定的修改内容。
-
务必输入提交信息
-
标准注解
-
第1行:提交修改内容的摘要 第2行:空行 第3行以后:修改的理由
-
3.工作树和索引
在数据库和工作树之间有索引,索引是为了向数据库提交作准备的区域。
Git在执行提交的时候,不是直接将工作树的状态保存到数据库,而是将设置在中间索引区域的状态保存到数据库。因此,要提交文件,首先需要把文件加入到索引区域中。
所以,凭借中间的索引,可以避免工作树中不必要的文件提交,还可以将文件修改内容的一部分加入索引区域并提交。
4.初期设定
安装后,设定名字和邮箱
5.新建数据库
- 创建目录文件,右键选择「Git 在这里创建版本库」
- 成功后,内有隐藏文件
.git
6.提交文件
- 目录文件内做出增删改
- 目录内,右击任意空白地方,然后从右击菜单选择‘Git提交’。
- 点选‘变更列表’里的对应文件,然后在日志信息方框中输入提交信息,再点击‘确定’键。
- 右击菜单选择TortoiseGit > 显示日志;查看操作记录已添加在历史记录里
二、共享数据库
- Git执行推送(Push)操作,本地的修改记录会被上传到远程数据库
- 进行克隆(Clone)操作就可以复制远程数据库。
- 执行克隆后,远程数据库的全部内容都会被下载。另一台机器的本地数据库上进行操作。
- 克隆后的本地数据库的变更履历也会被复制,所以可以像原始的数据库一样进行查看记录或其他操作。
1.在Gitee建立远程仓库
- 建立repository,填写信息
- 获取数据库的HTTP或者SSH
2. Push到远程数据库
- 右击“tutorial”(对应仓库)目录,然后选择“推送”。
- 点击‘管理’
- 在"远端"输入"origin",在"URL"输入上一页中生成的远程数据库的URL,然后点击"添加/保存"。这样,"origin"将被添加到远程列表,然后点击"OK"。
- 执行推送或者拉取的时候,如果省略了远程数据库的名称,则默认使用名为”origin“的远程数据库。因此一般都会把远程数据库命名为origin。
- 输入Gitee用户名和密码
- 成功后再Gitee仓库中查看最近更新消息
- 日志
master origin/master** **origin/HEAD已经提交到远程数据库成功
3.克隆远程数据库
- 选择文件放置位置,然后从右击菜单中选择“Git克隆”。
- 点击“Clone Repository" 按钮,再输入要克隆的远程数据库的URL(HTTP)和要保存的本地数据库的目录(注意设置本地数据库名),然后点击“确定”。
- 等待成功
4.克隆数据库中Push
- 克隆数据库,修改文件内容,先提交,再推送;
4.1关于提交的位置
- origin/master 表示远程数据库“origin”的分支“master”的位置。
- origin/HEAD 表示远程数据库“origin”当前提交的位置。 通常,克隆本地数据库时指向与“origin/master”相同的位置。
- master 表示本地数据库分支“master”的位置。
5.从远程数据库pull
-
右击tutorial目录,然后从右击菜单中选择’拉取‘,即可执行pull操作。
-
从右击菜单选择 TortoiseGit > 日志。现在"master" 和 "origin/master"在同一水平上,意味着本地数据库已完成更新。
三、整合修改记录
1.合并修改记录
- 执行pull之后,进行下一次push之前,如果其他人进行了推送内容到远程数据库的话,push将被拒绝。
- 在读取别人push的变更并进行合并操作之前,push都将被拒绝。如果不进行合并就试图覆盖已有的变更记录的话,其他人push的变更会丢失。
- 合并的时候,Git会自动合并已有的变更点!不过,也存在不能自动合并的情况。
2.解决冲突
如果远程数据库和本地数据库的同一个地方都发生了修改的情况下,因为无法自动判断要选用哪一个修改,所以就会发生冲突。
2.1 Git会在发生冲突的地方修改文件的内容
如下图。所以我们需要手动修正冲突。
==分割线上方是本地数据库的内容, 下方是远程数据库的编辑内容。
2.1如下图所示,修正所有冲突的地方之后,执行提交。
高级篇
一、分支 branch
1.什么是分支?
分支是为了将修改记录的整体流程分叉保存。分叉后的分支不受其他分支的影响,所以在同一个数据库里可以同时进行多个修改。
分叉的分支可以合并。
为了不受他人的影响,可以在主分支上建立自己专用的分支。完成工作后,将自己分支上的修改合并到主分支。因为每一次提交的历史记录都会被保存,所以当发生问题时,定位和修改造成问题的提交就容易多了。
1.1 master分支
数据库进行最初的提交后, Git会创建一个名为master的分支。因此之后的提交,在切换分支之前都会添加到master分支里。
2.分支的运用
Git可以自由地建立分支。但是,要先确定运用规则才可以有效地利用分支。
2.1 Merge分支
为了可以随时发布release而创建的分支,它还能作为Topic分支的源分支使用。保持分支稳定的状态是很重要的。如果要进行更改,通常先创建Topic分支,而针对该分支,可以使用Jenkins之类的CI工具进行自动化编译以及测试。
通常,大家会将master分支当作Merge分支使用。
2.2 Topic分支
Topic分支是为了开发新功能或修复Bug等任务而建立的分支。若要同时进行多个的任务,请创建多个的Topic分支。
Topic分支是从稳定的Merge分支创建的。完成作业后,要把Topic分支合并回Merge分支。
3.分支的切换
切换作业的分支,要进行checkout操作。进行checkout时,git会从工作树还原向目标分支提交的修改内容。checkout之后的提交记录将被追加到目标分支。
3.1 HEAD
指向的是现在使用中的分支的最后一次更新。通常默认指向master分支的最后一次更新。通过移动HEAD,就可以变更使用的分支。
3.2 stash
还未提交的修改内容以及新添加的文件,留在索引区域或工作树的情况下切换到其他的分支时,修改内容会从原来的分支移动到目标分支。
但是如果在checkout的目标分支中相同的文件也有修改,checkout会失败的。这时要么先提交修改内容,要么用stash暂时保存修改内容后再checkout。
stash是临时保存文件修改内容的区域。stash可以暂时保存工作树和索引里还没提交的修改内容,您可以事后再取出暂存的修改,应用到原先的分支或其他的分支上。
4.分支的合并
完成作业后的topic分支,最后要合并回merge分支。
合并分支有2种方法:使用merge或rebase。使用这2种方法,合并后分支的历史记录会有很大的差别。
待续
RecordDate:2023/02/27