玩转git add
git在本地有三个工作区域:本地工作区、暂存区、本地版本库。
git add
命令是将本地工作区的代码提交到暂存区。git add
命令也常被叫做“添加”。
1、git add
git add后面可以跟不同的参数表示不同的添加方式,常用的有下面几种:
-
git add <file-name>
将本地工作区中指定的文件提交到暂存区; -
git add .
将本地工作区中所有的修改的、新添加的文件提交到暂存区,不包括删除的文件; -
git add -u
将本地工作区中所有修改的、删除的文件提交到暂存区,不包括新添加的文件; -
git add -A
将本地工作区中所有修改的、删除的、新添加的文件提交到暂存区;
2、git add文件后想撤销,怎么办?
经常会遇到在执行git add之后,发现自己添加错了文件,这个时候该怎么办呢?git reset
命令给了我们补救措施。
与git add
相类似,git reset
命令后面可以跟不同的参数表示不同的撤销方式,常见的有以下几种:
-
git reset HEAD
撤销最近一次提交 -
git reset HEAD <file-name>
撤销指定文件的提交
补充:
2019/10/18
一次“惨痛”经历让我深刻了解到git add .
与git add -A
的区别,以前看这两个命令的时候觉得差不多,平时在开发时用git add .
都能满足需求,最近在开发过程中,发现之前已存在的文件夹的名称大小写错了,于是更改文件夹的大小写,修改完成后,git status
后可以看到旧的文件夹及内部文件都会被删除、修改后的文件夹内的文件被视为新增文件,此时,使用git add .
对此次修改进行提交,提交完成后,发现在gitlab中新旧文件夹都存在,这就很麻烦了,于是只能手动在gitlab将大小写错误的文件夹内的文件一一删除(还好文件不多),之后,将远程代码pull到本地,pull下来之后会将本地修改大小写后文件夹及内部文件删除,此时我们只需要撤销这些删除即可,这样才解决了修改文件夹名大小写后使用git add .
命令造成远程仓库存在新旧两个文件夹的bug,回过头来,如果当初修改完大小写名称后,使用git add -A
命令,将本地所有的操作(修改、删除、新增文件)提交到远程,就不会出现上述问题!
参考文献
[1] 【git】git add 添加错文件 撤销
[2] Git 基础 - 撤消操作