本文是 Git 系列的第二篇,主要介绍 Git 的基本使用
一、Git 基本工作流
在介绍 Git 原理中,我们介绍了 Git 中文件的三种状态,以及所对应的三个阶段:工作区、暂存区和版本库;但是在实际的工作中我们还要增加一个:远程版本库或者远程仓库;
- Git 的基本工作流程如下图所示
二、工作区与暂存区之间的操作
工作区 (working Dir) 与暂存区 (Stage Area) 之间的操作主要是下图中红色箭头的部分
1)从工作区到暂存区
这一部分的场景是:当我们对代码或者其他的文档进行修改之后,我们需要首先将改动添加到暂存区来暂时存储修改
即:工作区(working Dir)中未被追踪的修改加入到暂存区(stage Area)进行追踪
# 将工作区中所有的修改的文件添加到暂存区
git add .
# 将工作区中某一个修改的文件添加到暂存区
git add filename
# 将工作区中多个修改的文件添加到暂存区
git add filename1 filename2 filename3
2)从暂存区到工作区
使用场景:先将当前工作区中的修改提交到暂存区之后,接着在工作区进行修改;但是修改之后,又不想要当前对工作区的修改了,想要将之前保存在暂存区中的修改还原到工作区
git checkout filename
# 注意 checkout 命令存在两种含义:
# 1. 切换分支
# 2. 从暂存区回退某一个文件的修改
# 通常情况下,可以使用上面的方法回退,但是当文件名与分支名冲突的时候,需要添加两个短横线
git checkout -- filename
# 另外一种可以达成这个目的的方法
# 即:丢弃工作区这个文件的改动
git restore --staged filename
三、暂存区与本地版本库之间的操作
本节聚焦于暂存区(stage Area)与本地版本库(.git Dir)之间的操作;即下图中红色箭头的部分:
1)从暂存区到本地版本库
将暂存区中的文件提交到本地版本库形成一个新的历史版本;会分配一个 Hash 值,安全地保存在版本库中
# 将暂存区中所有的文件添加到版本库
git commit -m "注释"
# 将某一文件添加到版本库
git commit filename -m "注释"
2)从本地版本库到暂存区
将版本库中最近一个版本还原到暂存区
使用场景:当我们修改了文件,并且将修改提交到暂存区,如果我们发现不应该将所有的文件添加到暂存区,或者说我们发现这次的修改有问题,需要重新修改,可以使用版本库的文件恢复暂存区的文件
注意:下面的这个操作并不会影响工作区的修改
# 从版本库恢复到暂存区
git reset filename
# 取消文件的暂存
git restore --staged filename
# 或者
git rm --cached filename
四、工作区和本地版本库之间的操作
这一节聚焦于工作区(working Dir)和本地版本库(.git Dir)之间的操作;即下图中红色箭头的部分:
1)从工作区到本地版本库
git commit -a -m "注释"
# 等同于下面两个:即先从工作区到暂存区,再到版本库
git add .
git commit -m "注释"
2)从本地版本库到工作区
使用场景:想要丢弃本地所有的修改,恢复最新的版本库中的文件;这个操作将会删除工作区中所有的修改和暂存区中暂存的文件,但是新增的文件不会被撤销
git checkout HEAD .
五、Git 中常用的特殊命令
要想记住所有的命令是不可能的,重要的是用好
-help
注意:下面的代码中中括号 []
中的内容是可选内容
# 将本地的文件夹初始化为 Git 版本仓库
git init
# 查看工作区、暂存区和版本库的文件状态
git status
# 查看工作区中所有文件[某个文件]的修改内容
git diff [filename]
# 查看某一个命令的帮助文档,直接在某一个命令后面加上 --help 即可
git commit --help
# 查看所有提交历史
git log
# 查看所有分支的所有操作记录(包括提交、回退、已删除的提交操作记录等 )
git reflog
# 将未追踪的文件删除
git clean