目录
一、Git概述
1、Git工作机制
1.1 本地库工作机制
Git使用本地库在我们本地的电脑上就可以记录版本信息,不需要联网。

1.2 代码托管中心
代码托管中心负责维护远程库,让团队成员可以彼此协作。
局域网
Gitlab:如果有特殊需求不能使用外网的代码托管中心,可以在局域网内搭建自己的代码托管中心服务器。
Internet
GitHub:国外网站,有非常多优秀的开源项目托管代码,但是从国内访问很慢。
码云:国内的代码托管中心,在国内互联网开发圈子中的地位举足轻重。
1.3 远程库工作机制
团队内协作

跨团队协作

二、本地库命令行基本操作
1、初始化本地库
创建一个目录,使用命令初始化为本地库,会生成.git文件。。
git init2、设置用户签名
签名区分不同操作者身份。签名信息在每一个版本的提交信息中能够看到。
注意:这里设置用户签名和将来登录GitHub的账号没有任何关系。
git config --global user.name xiuluo
git config --global user.email 136366514@qq.com执行生成配置文件

3、创建文件并进行版本控制
3.1 新建文件
新建hello.txt
3.2 查看本地库状态
git status
3.3 追踪文件并添加到暂存区
git add 文件
#提交全部
git add . 该命令有两个作用:
- 对“未追踪”的文件进行追踪,也就是加入版本控制体系,被Git管理。
- 将工作区的变动(新增和修改)添加到暂存区

3.4 再次查看本地库状态
检测到有新建的文件添加到了暂存区

3.5 将暂存区中的修改提交到本地库
git commit -m "本次提交描述" 提交文件
3.6 提交完成后再查看本地库状态

4、修改文件进行版本控制
4.1 修改文件后查看本地库状态

4.2 工作区文件修改后添加到暂存区

4.3 后续操作
提交后再次查看状态,如果操作正确应该还是看到“working tree clean”。

5、不add直接commit
两种情况:
- 新建的文件尚未纳入版本控制体系:必须先add纳入版本控制体系后才可以commit
- 已纳入版本控制体系的文件被修改:可以不add直接commit,Git自动执行了add
6、版本穿梭
6.1 查看版本记录
git reflog
6.2 切换到指定版本
git reset --hard 版本号切换到第一个版本

从第一个版本修改hello.txt后再次提交

6.3 底层其实是移动HEAD指针

三、本地库命令行分支操作
1、什么是分支
在使用版本控制工具开发的过程中,同时推进多个任务

2、分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3、分支操作
3.1 创建分支和切换分支
查看分支
git branch -v
创建分支
git branch 分支名切换分支
git checkout 分支名
3.2 分支的底层实现
Git的分支操作之所以能够非常平滑,就是因为创建分支时,Git底层并没有把本地库中的内容复制出来,而仅仅是创建新的指针。有新版本提交后移动指针。

master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。
所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果指向hotfix,那么我们现在就在hotfix分支上。
所以切换分支的本质就是移动HEAD指针。
3.3 在两个不同分支分别做不同修改
在hotfit分支修改

提交

切换主分支修改hello.txt
git checkout master
vim hello.txt
git add hello.txt
git commit -m "fifth commit"

3.4 分支合并

合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。
命令写法:git merge 目标分支
所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。
例如:把hotfix合并到master
git merge hotfix
需要确保当前所在的分支是master例如:把master合并到hotfix
git merge master
需要确保当前所在的分支是hotfix
4、冲突
分支合并时,如果同一个文件的同一个位置有不同内容就会产生冲突。

4.1冲突的表现

Git使用<<<<<<<、=========、>>>>>>>>>>标记出来产生冲突的内容。
- 表示HEAD指针指向的位置(其实就是当前分支)在冲突中的内容
<<<<<<< HEAD
hello world git2 fifth
=======- 表示hotfix指针指向的位置在冲突中的内容
=======
hello world git2 fourth
>>>>>>> hotfix所以所谓冲突其实就是让我们在这二者中选择一个,Git无法替我们决定使用哪一个。必须人为决定新代码内容。
此时使用git status命令查看本地库状态

4.2 冲突的解决
[1]第一步
编辑有冲突的文件,删除特殊符号,决定要使用的内容

[2]第二步
添加到暂存区git add hello.txt
使用git status命令查看本地库状态

[3]第三步
执行提交

Ценники на вывоз мусора сейчас космос, любые лайфхаки по экономии в тему.
1xbet onlayn kazino platforması ilə vaxtınızı daha səmərəli və maraqlı keçirin. Saytın canlı kazino bölməsi istifadəçilərə fərqli bir dünya təklif edir. Burada canlı dilerli kazino oyunlarının hər bir növünü sınaqdan keçirə bilərsiniz. Krupyelərin peşəkarlığı oyunun dinamikasını və marağını artırır. Müntəzəm olaraq yenilənən oyun siyahısı cansıxıcılığa yol vermir. Hesabınızı artırmaq üçün onlarla fərqli və etibarlı üsul mövcuddur. Qazanılan pullar cəmi bir neçə dəqiqə ərzində şəxsi hesabınıza köçürülür. Aktiv fəaliyyətinizə görə fərdi bonuslar və hədiyyələr qazana bilərsiniz. Dəstək xidməti həm çat, həm də e-poçt vasitəsilə kömək göstərir. 1xbet ailəsinə qoşulun və böyük uduşlar üçün ilk addımı atın. onlayn kazino
我一直梦想, 看到你们相册那样的地方。真棒。
我喜欢, 这里分享真实经验。你的项目 就是 属于这里的。请继续。
我热爱这样的想法, 去那么多国家。真的很鼓舞。
能感受到热爱。继续保持 感受。
我关注这样的资源, 写得很实在。你的网站 就是 属于这里的。加油。
1
1
1