1 命令
git add
是暂存的主命令。不速之客不会自动纳入 Git 的跟踪范围。运行命令 git add
将它添加到跟踪名单。注意,新加入跟踪名单的文件总是默认直接暂存的。当 git add
的参数是目录路径时,该目录下所有文件都会被跟踪。我们常用 git add .
一键跟踪当前目录下所有文件。
2 状态
git status
可以随时查看项目文件的暂存状态。
文件可能同时存在已暂存和未暂存两种状态,因为 Git 以“行”为基本单位,与其说暂存是已跟踪文件的一种状态,不如说是已跟踪文件的行的一种状态。
git gui
是 Git 入门的好帮手,虽然它只实现了部分功能,但应付日常已经足够。
3 忽略
.gitignore (注意第一个字符是小数点)用于过滤无需 Git 管理的文件。要养成一开始就设置好 .gitignore 的习惯,以免将来不慎提交。
.gitignore 的格式规范如下:
- 所有空行或者以
#
开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配。
- 以
/
开头可以防止递归。 - 以
/
结尾可以指定目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号
!
取反。
glob 模式是指 shell 所使用的简化正则表达式,常见的表达形式有:
- 星号
*
匹配零个或多个任意字符。 [abc]
匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a ,要么匹配一个 b ,要么匹配一个 c )。- 问号
?
只匹配一个任意字符。 - 如果在方括号中使用
-
分隔两个字符,表示所有在这两个字符范围内的都可以匹配,比如[0-9\]
表示匹配所有 0 到 9 的数字。 - 使用两个星号
**
表示匹配任意中间目录,比如a/**/z
可以匹配a/z
、a/b/z
或a/b/c/z
等。
.gitignore 是有顺序的,建议先写忽略规则,后写例外规则。
.gitignore 范例参见 https://github.com/github/gitignore 。
4 移除
目前只考虑简单的情况,即移除 Git 仓库对指定文件的版本控制。
$ git rm # 不保留文件
$ git rm --cached # 保留文件
5 重命名
$ git mv file_from file_to
<=>
$ mv README.md README
$ git rm README.md
$ git add README
Git 太聪明了,即使这三条命令分开操作,它也能猜出你在重命名。