git 版本控制器
版本控制是指对软件开发过程中各种程序代码、说明文档等文件的变更进行管理,它将追踪文件变化,记录文件的变更时间、变更内容、甚至变更执行人进行记录,同时对每一个阶段性变更(不仅仅只是一个文件的变化)添加版本编号,方便将来进行查阅特定阶段的变更信息,甚至是回滚
安装
官网下载 注意版本 https://git-scm.com/
状态
同时,git 又提供了三种(也可以说是四种)不同的记录状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
- 未追踪(Untracked)特殊的状态
区域
git 提供了三个不同的工作区,用来存放不同的内容
- 工作目录
- 暂存区域
- Git 仓库
配置指令
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改
通过 --global
选项可以设置全局配置信息
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱" //写值是设置 不写是查看
创建仓库 git init
进入 git 版本控制的项目目录,使用 git init
初始化
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动,创建的默认是隐藏的 更改隐藏设置查看创建的文件
工作流与基本操作
当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked)
的状态
git config --list 查看创建的git配置信息
查看工作区的文件状态
(本地文件夹就是工作区)
git status
添加工作区文件到暂存区
没添加之前输入git status 显示是红色
添加之后显示为绿色 文件名前 有new file 字样(去到暂存区) 现在还没到仓库
git add 1.txt
# 添加多个文件
git add 2.txt 3.txt
# 添加整个目录
git add ./a
# 添加多个目录
git add ./b ./c
# 添加所有文件
git add .
创建版本
git commit
git commit提交所有暂存区的文件 加文件名提交指令文件
提交了之后安装绑定的的是vs code 这是vs code会弹出一个文件 在第一行进行版本描述(备注) 就可以关闭了
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
- 每次提交同时会生成一个 40 位的哈希值,作为该次提交版本的唯一 id
提交备注
每次提交都需要填写备注信息
git commit
// 会调用默认(或自定义)的文本编辑器
// 单行备注
git commit -m 备注信息
查看提交日志
完整格式
git log
简要格式(单行)
git log --oneline
修复提交
git commit 文件名 --amend
注意要先添加到暂存区域
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中
git commit --amend -m 提交
删除
# 从 git 仓库与工作区中删除指定文件
git rm 文件 (只在仓库中的文件可以直接删除) 也会问你确定么 一般工作区域的东西不要删
# 只删除 git 仓库中的文件,删除完后 去到暂存区,还可以撤销(取消)刚才的删除操作 回到仓库 或者确定(彻底删除)
git rm --cached 文件名
git restore --staged 文件名 撤销删除
# rm 以后,需要 commit 确定这次操作,否则 rm 将保留在暂存区
git commit 文件名(不带全部) -m 修正(操作信息)
或者
git commit 弹出删除的提交日志
撤销重置 回退当前的提交
git reset
从暂存区中撤销到工作区
// 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
// 从暂存区撤销所有文件
git reset HEAD .
该命令既可以用于回退版本 !!!
# 回退到指定的 commitID 版本
git reset --hard commitID 更改后只剩一个版本,但是想回退那个版本都可以 随便
比较
如果修改了原文件 git status 会提示已修改状态 要重新添加 或者撤销修改,如果确定修改 git add . 全部添加到暂存区
# 比较 工作区和暂存区
git diff 文件
# 比较 暂存区和仓库
git diff --cached commitId
# 比较 工作区和仓库
git diff commitId filename
# 比较 仓库不同版本
git diff commitId1 commitId2