Git 仓库文件的主要操作为提交与修改。
添加文件
git add
命令可以将文件添加到暂存区,其常见用法有以下三种:
添加特定文件
1
git add <file1> <file2> <...>
添加特定目录
1
git add <dir>
添加当前目录下所有文件
1
git add .
文件修改后一般都需要使用该命令将其保存于暂存区中。
查看状态
git status
命令可以查看自上次提交后对文件的修改状况。
一般会使用带参数的命令 git status -s
获得简化后的输出。使用该方法查看状态时会列出全部文件的文件名,并在名称前方放置最长两个字符的标记来标识文件状态,左侧指明其在暂存区中的状态,右侧指明其在工作区的状态。具体地,有:
A
:文件已添加到缓存区;M
:文件在缓存区/工作区发生改动;?
:文件未追踪。
比较文件不同
git diff
命令可以比较文件的不同。根据实际应用场景,有以下几种用法:
git diff
:查看尚未缓存的改动;git diff --cached
:查看已缓存的改动;git diff HEAD
:查看已缓存的和未缓存的所有改动;git diff --stat
:显示摘要。
显示暂存区和工作区的差异:
1 | git diff <file> |
显示暂存区暂存区和上一次提交之间的差异:
1 | git diff --cached <file> |
或
1 | git diff --staged <file> |
显示两次提交之间的差异:
1 | git diff <branch-a>...<branch-b> |
提交版本
git commit
命令可以将暂存区内容写入版本库中。
提交暂存区到本地仓库中,并添加备注信息:
1 | git commit -m <message> |
提交暂存区的指定文件到本地仓库中:
1 | git commit <file1> <file2> <...> -m <message> |
跳过暂存区直接提交:
1 | git commit -a |
回退版本
git reset
命令可以指定退回某一次提交的版本。
回退版本命令的基本结构如下:
1 | git reset <--arg> HEAD |
<--arg>
有以下几个可选参数,默认为 --mixed
:
--soft
:用于回退到某个版本;--mixed
:用于重置暂存区的文件与上一次的提交保持一致,但不会改变工作区文件内容,即取消已缓存的内容;--hard
:用于撤销工作区中所有未提交的修改内容,将暂存区和工作区都回到上一个版本,并删除之前的所有信息提交。
–hard 参数会删除回退点之前的所有信息
该命令中的 HEAD
也可以附加符号来指定其它版本:
HEAD
或HEAD~0
:当前版本;HEAD^
或HEAD~1
:上个版本;HEAD^^
或HEAD~2
:上上个版本;HEAD^^^
或HEAD~3
:上上上个版本;- 以此类推。
删除工作区文件
可以使用 rm
等命令或鼠标操作删除工作区文件,但使用该方法并不会对暂存区和版本库中的对应文件产生影响,反而会在之后因缺失工作区文件而弹出“改动未提交”的提示。
git 也有对应于 rm
等删除命令的对应命令,为 git rm
。根据具体场景,有以下几种用法:
将文件从暂存区和工作区中删除:
1
git rm <file>
如果文件在删除之前修改过并且已经放到暂存区域的话,必须使用强制删除选项
-f
:1
git rm -f <file>
如果仅想删除暂存区中的文件,而不影响工作区的内容,需要使用选项
--cached
:1
git rm --cached <file>
移动或重命名工作区文件
git mv
命令用于移动或重命名一个文件、目录或软连接。
该命令的基本结构如下:
1 | git mv <file> <newfile> |
该命令会将 <file>
文件重命名为 <newfile>
。如果文件 <newfile>
已经存在,但还是想重命名它,那么就需要附加选项 -f
:
1 | git mv -f <file> <newfile> |