官网地址:https://git-scm.com/
一、安装选项解释
1. 安装路径选择一个没有中文空格的路径
2.
二、Git介绍
1. Git简史
2. Git结构
3. Git和代码托管中心
代码托管中心的任务:维护远程库
局域网环境下
- GitLab 服务器
外网环境下
- GitHub
- 码云
4. 本地库和远程库
三、Git 命令行操作
1. 本地库初始化
命令:git init
注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
2. 设置签名
形式
- 用户名:tom
- Email 地址:[email protected]
作用:区分不同开发人员的身份
辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系(雷锋和雷峰塔的关系)。
命令
1) 项目级别/仓库级别:仅在当前本地库范围内有效
- git config user.name tom_pro
- git config user.email [email protected]
信息保存位置:./.git/config 文件
2) 系统用户级别:登录当前操作系统的用户范围
- git config --global user.name tom_glb
- git config --global user.email [email protected]
信息保存位置:~/.gitconfig 文件
3) 级别优先级
就近原则:
- 项目级别优先于系统用户级别,二者都有时采用项目级别的签名
- 如果只有系统用户级别的签名,就以系统用户级别的签名为准
- 二者都没有不允许(Git 无法确定这是那个开发人员,无法识别身份,报错)。
注:一般我们都是设置系统级别,不然每次创建一个仓库我们都得去设置一次
3. 基本操作
3.1 状态查看
git status 查看工作区、暂存区状态
首次初始化使用 git status 这个时候我们什么都还没有提交过,工作空间也没有什么是可以提交的
创建一个文件,输入数据
3.2 添加
git add [filename] 将工作区的“新建/修改”添加到暂存区
3.3 提交
git commit -m "commitmessage" [filename] 将暂存区的内容提交到本地库
当我们去修改一个已经提交到版本库里面的文件的时候,这个时候我们可以在 git add 然后 git commit,我们也可以使用 git commit -a 一步到位
- 已经进行过版本追踪的文件,可以不 git add,直接 git commit 但是这样就不可以撤销
- 新加的文件需要先 git add 在 git commit
如果没有 -m 选择,这个时候回弹出vim,让我们输入提交的描述信息

四、 前进后退
4.1 查看历史记录
git log
注:HEAD 其实就是一个指针,它执行当前的版本,我们去前进后退就是移动指针。Author 和 Date 正是我们前面配置的签名,Date 是我们提交的实际,最后是提交信息。
多屏显示控制方式:
- 空格向下翻页
- b 向上翻页
- q 退出
git log --pretty=oneline
git log --onelint
只能看到当前版本及以前的版本,就是不能预知未来 (你回到了过去,就只能看到过去和过去以前发送的事情了)
git reflog
[email protected]{移动到当前版本需要多少步}
4.2 前进后退
本质:指针(名字HEAD 取名字是为了方便我们去引用)的移动
1. 基于索引值操作[推荐]
- git reset --hard[局部索引值]
- git reset --hard a6ace91
- https://git-scm.com/docs/git-reset
- git reset --hard HEAD 恢复到当前指针所指向的位置
2. 使用^符号:只能后退
- git reset --hard HEAD^
- 注:一个^表示后退一步,n 个^(HEAD^^^)表示后退 n 步
3. 使用~符号:只能后退
- git reset --hard HEAD~n
- 注:表示后退 n 步
演示:重新新建了一个本地仓库,并且提交了四次,每次增加一行单词
第一种方式:不用考虑前进后退
回退到第三次提交的时候
后面的两种方式只能回退版本,往最初的版本去
reset 命令的三个参数对比
https://git-scm.com/docs/git-reset
1. --soft 参数
- 仅仅在本地库移动 HEAD 指针
2. --mixed 参数
全都回退,就工作区没有回退,所以此时 git status 显示的是红色状态
- 在本地库移动 HEAD 指针
- 重置暂存区
3. --hard 参数
- 在本地库移动 HEAD 指针
- 重置暂存区
- 重置工作区
小提示:
五、删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库。
操作:git reset --hard[指针位置]
- 删除操作已经提交到本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用 HEAD(刷新当前版本)
六、比较文件差异
1. git diff[文件名]
- 将工作区中的文件和暂存区进行比较
2. git diff[本地库中历史版本][文件名]
- 将工作区中的文件和本地库历史记录比较
3. 不带文件名比较多个文件