目录
1. Git概述
- Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型地各种项目
- Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性
1.1. 何为版本控制
- 版本控制是一种记录文件内容变化,以便来查阅特定版本修订情况的系统
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
1.2. 为什么需要版本控制
- 个人开发过渡到团队协作
1.3. 版本控制工具
1.3.1. 集中式版本控制工具
1.3.2. 分布式版本控制工具
1.4. Git工作机制
1.5. Git和代码托管中心
- 代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
- 局域网
-
- GitLab
- 互联网
-
- GitHub(外网)
- Gitee码云(国内网站)
2. Git常用命令
2.1. 设置用户签名
- 签名的作用是区分不同操作者身份。
- Git首次安装必须设置一下用户签名,否则无法提交代码
- 这里设置用户签名和将来登录Github(或其它代码托管中心)的账号没有任何关系
2.2. 初始化本地库
linux清屏快捷键 Ctrl + L
"i" 进入编辑模式
退出编辑模式:ESC
复制:按“yy"之前需先按ESC,粘贴:p
保存:按”:“键输入wq
- 基本语法
git init
2.3. 查看本地库状态
- 基本语法
git status
2.3.1. 首次查看(工作区没有任何文件)
- 这三句话是Git命令行输出的信息,它们的意思是:
- "On branch master":表示当前所在的分支是master分支。
- "No commits yet":表示在当前分支上还没有进行任何提交操作。
- "nothing to commit (create/copy files and use 'git add' to track)":表示当前工作目录中没有需要提交的文件。要创建或复制文件并使用"git add"命令来跟踪它们。
2.3.2. 新增文件(hello.txt)
🚀步骤
- vim 文件名
- 查看文件:ll;查看隐藏文件:ll -a
- 查看文档:cat 文档名
- 查看文档末尾第一行:tail -n 1 文档名
2.4. 添加暂存区
🚀步骤
- 再次查看本地库状态
- "use 'git add ...' to include in what will be committed":这是建议,告诉你可以使用"git add ..."命令来将你想要提交的文件添加到暂存区(staging area)。这样,当你执行提交操作时,这些文件就会被包含在提交中。
- "hello.txt":这是其中一个未被跟踪的文件,名为"hello.txt"。(红色)
- 添加到暂存区
- 再次查看本地库状态
- "Changes to be committed":表示有一些更改已经准备好被提交到暂存库中。
- "use 'git rm --cached ...' to unstage":这是建议,告诉你可以使用"git rm --cached ..."命令来取消暂存(unstage)某个文件。这样,该文件的更改将不会被包含在下一次提交中。
- "new file: hello.txt":这是一个新文件,名为"hello.txt",它已经被添加到了暂存库中,但尚未提交。
- 取消暂存
2.5. 提交本地库
2.5.1. 将暂存区的文件提交到本地库
- 基本语法
git commit -m "日志信息" 文件名
🚀步骤
- 查看状态
- "nothing to commit":表示当前没有需要提交的更改
- "working tree clean":这进一步强调了工作目录(working tree)是"干净"的,即没有未纳入Git跟踪的新文件或未暂存的更改
- 查看版本信息
git reflog
- aaacc6d:版本号
- 查看版本详细信息
git log
2.6. 修改文件(hello.txt)
🚀步骤
- 修改文件
- 查看状态
- "modified: hello.txt":这是一个已修改的文件,名为"hello.txt",它的更改尚未被添加到暂存区
- 追踪修改(添加到暂存区)
- 再次查看状态
- 添加到本地库
- 查看本地库状态
- 查看版本信息
- HEAD -> master :指针指向第二个版本
2.7. 历史版本
2.7.1. 查看历史版本
- 查看版本信息
git reflog
- aaacc6d:版本号
- 查看版本详细信息
git log
2.7.2. 版本穿梭
- 基本语法
git reset --hard 版本号
🚀步骤
- 查看版本号
- 穿梭回指定版本
- 再次查看版本号
- 查看文件内容
- 在文件夹中查看版本号
3. Git分支操作
3.1. 什么是分支
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支
- 使用分支意味着程序源可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
- 分支底层也就是指针的引用
3.2. 分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其它分支有任何影响。失败的分支删除重新开始计科
3.3. 分支的操作
3.3.1. 查看分支
- 语法
git branch -v
3.3.2. 创建分支
- 基本语法
git branch 分支名
🚀步骤
- 创建分支
- 查看分支
3.3.3. 切换分支
- 基本语法
git checkout 分支名
🚀步骤
- 切换分支
- 查看分支
- 修改文件(hello.txt)
- 查看状态
- 添加到暂存区
- 提交到本地库
- 查看版本信息
3.3.4. 合并分支
- 语法
git merge 分支名
3.3.5. 产生冲突
- 冲突产生的表现:后面状态为MERGING
- 产生原因:合并分支时,两个分支在在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容
🚀步骤
- 修改文件内容
- 提交到本地库
- 切换分支
- 修改文件内容
- 提交到本地库
- 切换分支
- 合并分支
- Auto-merging hello.txt:这句话表示系统正在尝试自动合并名为hello.txt的文件。
- CONFLICT (content): Merge conflict in hello.txt:这句话表示在尝试合并hello.txt文件时,发现了内容上的冲突。这通常是因为两个不同的分支在同一文件的同一位置进行了不同的修改,导致系统无法确定应该使用哪个版本的内容。
- Automatic merge failed; fix conflicts and then commit the result.:这句话表示自动合并失败,需要手动解决冲突。解决冲突的方法通常是查看冲突文件,找到冲突的部分,然后根据实际情况选择保留哪个版本的修改或者进行其他处理。解决冲突后,需要将修改后的文件提交到版本控制系统。
- 查看本地库状态
- 查看文件内容
- 修改内容
- 查看本地库状态
- 添加到暂存区
- 提交到本地库(注意:此时使用 git commit 命令时不能带文件名)
- 查看文件内容
master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么就在master分支上
HEAD如果指向hot-fix,那么就在hot-fix分支上