本篇主要也是介绍基础方面的知识。学会之后,我们可以在每次git提交操作之前都能详细的区分当前提交的文件内容。能够看明白Git提交时,系统日志中的各种含义。如果不清楚这之间的关系,那对于Git的了解就永远都处于一种会用,但是不理解的状态。
所以,了解文件状态,是我们掌握git的基础知识之一。同时也要弄明白很多文章中介绍的工作副本到底是什么。
当我们学会从Git远端仓库拉取和推送之后,可能对于git add
,git commit
已经有一部分的了解了。
同时我在前几篇文章中也介绍过关于git的文件的几种提交时的状态。但是不够清晰,本篇就主要围绕这方面知识点进行展开和学习。
我们的文件存储在Git仓库,不管是本地仓库还是远端仓库。仓库中都是有一个存储的。
而我们每次修改不可能是修改仓库里面的文件,通常都是修改从仓库中检出的文件。这个文件我们通常称之为:工作副本。
我们可以针对工作副本随意编辑和删除。如果改错了,随时都可以从仓库中进行回滚。我们能一直回滚到该文件第一次的提交记录。
我们本地的项目可以理解为:工作目录。而文件夹中的所有的文件都是每个独立的工作副本文件。我们针对该文件的操作都是对副本的一些操作,只有我们提交之后才会被git进行记录。其他人通过同步操作,就能将你的操作记录同步到他的本地仓库,然后他的本地工作副本就会进行刷新。
下面,统一将工作副本简称为文件进行介绍。
我们所有的文件都其实包括两种状态:
了解一下下面的流程图:
在上面的图解中,介绍了关于文件的几种状态流转。那么我们在git中如何查询呢?
可以通过git status 命令查询文件状态。示例:
例如我的目录下,Untracked Files (未跟踪的文件)。下面的红色区域就是我的工作目录中没有提交过的文件。当我执行git add
之后的效果如下:
可以看到,当我们执行add之后,文件就变成了 Changes to be committed (暂存状态)
我们如果add操作之后,存储在暂存区。但是没有commit。我们再次进行修改文件后,执行git status
之后。会出现下面的效果:
我们会发现,相同的文件出现了两种状态。所以我们如果执行commit就会存储第一次add后的结果。我们需要再次执行add才行。意思就是更新到暂存区中。
我们每次的commit操作,都是将暂存区的数据提交到仓库。示例:
我们commit操作之后,再查询git status
后就会显示下面的效果:
然后告诉我们,当前项目需要进行git push
操作,提交到远程仓库。
主要操作命令为:git push origin master
。
其中origin 是我们拉取远端仓库的时候给远端源命名的值(通常情况下,大家会使用origin这个命名而已)
而之后的master 就是我们当前仓库的分支名而已。就是这个命名
在这篇文章中有简单介绍过这两个的关系和获取:Git 的基本使用(一)配置用户名邮件等以及代码拉取 (zinyan.com)
但是我们有时候可以看到有一个git restore -- staged
命令。
特别是当我们执行git add之后,再查询status后,常见
那么这是用来干什么的?我们add之后不应该执行commit么?为什么又有一个restore呢?很简单因为restore是撤销操作。
git restore :将在工作空间但是不在暂存区的文件撤销更改(内容恢复到没修改之前的状态) git restore --staged XXXX:将暂存区的文件从暂存区撤出,但不会更改文件的内容。
就是一个撤销操作,撤销add的操作。
我们通过上面的过程就能知道基本的几种git的文件提交过程了:
$ git status //查询文件状态
$ git add . //将文件添加到暂存
$ git commit -m '更新说明' //将暂存数据提交到本地仓库
$ git push origin master //将本地仓库提交到远程仓库
我们整个流程大体是这样。但是中间还有不少过程,我们可以丰富学习
我们上面的示例中,每次status 之后查询的数据太多了。如果文件比较多的话,我们得翻到何时才能看明白啊。
针对这种需求,git提供了简洁数据。示例:输入: git status -s
可以看到全部采用了缩写模式。前面的标志意思如下:
其中还有一个关键就是忽略,ignore文件。下篇介绍忽略文件吧。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有