Git是怎么工作的?
首先,我们得先了解两个重要概念
-
状态
-
区域
状态
同时,git 又提供了三种(也可以说是四种)不同的记录状态
-
已修改(modified)
-
已暂存(staged)
-
已提交(committed)
有一个特殊的状态
-
未追踪(Untracked)
区域
git 提供了三个不同的工作区,用来存放不同的内容
-
工作目录
-
暂存区域
-
Git 仓库
安装 :
配置:
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改
git config user.name "你的姓名"
git config user.email "你的邮箱"
-- global:
通过 --global
选项可以设置全局配置信息
检查配置:
# 打印所有config
git config --list
# 打印指定config
git config user.name
创建仓库 - repository:
进入希望纳入 git 版本控制的项目目录,使用 git init
初始化
git init
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动
工作流与基本操作:
当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked)
的状态
查看工作区的文件状态:
git status 查看工作区中的文件状态
终端乱码:
添加工作区文件到暂存区:
git add
git add 1.txt # 添加多个文件
git add 2.txt 3.txt # 添加整个目录
git add ./a # 添加多个目录
git add ./b ./c # 添加所有文件
git add .
下面就是创建文件后查看的状态(绿色的是暂存区,红色的是工作区)
创建版本:
git commit
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
提交备注:每次提交都需要填写备注信息
git commit # 会调用默认(或自定义)的文本编辑器
修改默认编辑器:
git config core.editor notepad # 添加 vscode 编辑器 - mac 通过 vim 打开环境变量配置文件
vim ~/.bash_profile
# 添加环境变量
export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH
# 保存退出
source ~/.bash_profile
# 测试:在终端中直接通过命令 code 调用 vscode
git config --global core.editor "code --wait"
单行备注:
git commit -m 备注信息
查看提交日志:
git log
// 完整格式
// 简要格式(单行)git log --oneline
修复提交:
git commit --amend
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中
git commit --amend -m 提交
删除
git rm
# 从 git 仓库与工作区中删除指定文件
git rm 文件
# 只删除 git 仓库中的文件
git rm --cached 文件
# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正
撤销重置:
git reset
从暂存区中撤销到工作区
# 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
# 从暂存区中国年撤销所有文件
git reset HEAD .
该命令既可以用于回退版本:
# 回退到指定的 commitID 版本
git reset --hard commitID
比较:
git diff 文件 #工作区和暂存区
git diff --cached 【commitId】 文件#比较 暂存区和仓库
git diff commitId filename #比价工作区和仓库