Git的三个区
本地库:保存各种文件版本的数据库,可以向这个数据库中拉取各个文件版本或把更新后的文件推入数据库进行记录。这是 Git 用来保存项目的元数据和对象数据库的地方,是 Git 最重要的部分,从其他计算机克隆仓库时,拷贝的就是这里的数据。已经推入到这个数据库中的文件对应的状态是 已提交 (commited) 。
暂存区:用来存储对当前已修改过并且作了版本标记的文件,在同一段时间内位于暂存区尚未提交的所有文件都属于同一个当前的版本,这些标记使得对应文件被包含在下次提交的快照中。这个区域是一个文件,保存了下次将提交的文件列表信息,一般位于 Git 仓库目录中。在这个区域的文件状态是 已暂存 (staged) 。暂存区提交到本地库的命令为git commit
工作目录:开发人员写代码的地方,对于已经修改并保存的文件,都会存储在这个区域,等待转移到暂存区并提交。它是对项目的某个版本独立提取出来的内容。那些从 Git 仓库的压缩数据库中提取出来的文件,就是放在这个区域所在的磁盘上供你使用或修改。在这个区域的文件状态是已修改 (modified) 。工作目录提交到暂存区的命令为git add
初始化本地仓库操作
- 创建文件夹
- 进入文件夹中,右键Git bash here打开Git终端,如果是第一次使用,可以在终端中右键选择options
编辑终端的字体大小
编辑终端的编码格式
编辑终端的用户名
编辑终端的邮箱
ps:以上操作我都是在桌面下进行的,如果是进行上一步创建的文件夹中打开git终端,会显示如下信息
- 初始化操作
git init
在文件夹下可以查看到创建了一个.git的文件,需要先设置,才能进行查看
Git常用命令
add命令和commit命令:
- 在刚刚创建的本地库中,创建一个.txt文件
- 将文件提交到暂存区
执行命令为:git add test.txt
- 将文件提交到本地库
执行命令为:git commit -m "(描述提交文件的信息)" test.txt
注意:不放在本地仓库中的文件,git是不进行管理,即使放在本地库的文件,如果不进行add,commit命令,git也不进行管理
status命令
用来查看工作区和暂存区的状态,执行命令如下:git status
如果没有文件在暂存区,会显示如下信息
如果有文件没被git管理,会显示如下信息:(另外再创建一个新的.txt文件,直接执行git status
)
当文件只进行git add
操作时,状态如下:
当文件继续执行git commit
操作时,状态如下:
如果对test.txt文件进行修改,并查看status
重新提交到暂存区,add命令
再提交到本地仓库,commit命令
log命令
用于显示日志
注意:显示日志的时候,记录过多终端会自动进行分页操作
下一页:空格
上一页:键盘b按钮
退出:键盘q按钮
到了尾页:会显示END
拓展:
展示日志的不同方式:
- 优美型
git log --pretty=oneline
- 简洁型
git log --oneline
- 回退型
git reflog
在显示的结果中,包含信息:HEAD@{数字},此数字的含义是:指针回到当前历史版本需要走多少步
reset命令
用于前进或者后退历史版本
只对本地库放生改变,使用--soft
参数
使git的暂存区和本地库同时发生改变,工作区不变,使用--mixed
参数
使git的三个区都同时发生改变,使用--hard
参数
git reset --hard (索引号)
对test.txt进行修改,并提交,插入erha数据
add,commit操作
查看历史版本
回退到最老版本,命令为:git reset --hard 5b3131d
文件只剩下test.txt
前进到二哈的版本,命令为:git reset --hard 4e5eccd
删除操作
现在的文件目录如下:
使用命令删除工作区中test.txt
rm 文件名
将删除操作同步到暂存区:
将删除操作同步到本地库:
查看日志
diff命令
比对工作区与暂存区的不同,命令如下:git diff (文件名)
注意:如果不加文件名,会对所有文件进行比较
该文件夹下目录只有一个new.txt文件,内容为空
在new.txt中插入一行数据,并保存
用命令进行对比
add,commit之后再次修改
再进行对比
如果要比较的是暂存区和本地库
先把上面的修改添加到暂存区中
查看历史版本
与本地库最新版本进行比较,命令如下:git diff HEAD 文件名
注意:如果不想与最新版本比较可以把HEAD改为对应的索引号 事例:git diff a12c36b new.txt
参考:Git本地版本管理