NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
## 2.2 记录每次更新到仓库 Git 中文件的变化周期如下: ![](https://img.kancloud.cn/11/ad/11adea1f902fe302144aa064b56aebbf_800x330.png) ### 2.2.1 检查当前文件状态 要查看哪些文件处于什么状态,可以通过`status`指令查看文件状态,在`.gitconfig`中可以设置高亮。 ``` $ git status ``` 通过可选参数项`-s`查看状态简介: ``` $ git status -s ``` * `??`:表示新添加的未跟踪文件 * `A`:表示新添加到暂存区的文件 * `_M`:表示修改过的文件并且已经放入暂存区 * `M_`:表示修改过的文件并且没有放入暂存区 ### 2.2.2 跟踪新文件 & 暂存已修改文件 `git add`命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件: ``` $ git add [file] ``` 其中 `file` 参数是支持正则表达式的,并且命令支持交互式暂存: ``` $ git add -i $ git add --interactive ``` ### 2.2.3 忽略跟踪文件配置 在仓库中忽略某些文件的跟踪,需要创建一个名为`.gitignore`的文件,列出需要忽略的文件 * 所有空行或者以注释符号 # 开头的行都会被 Git 忽略 * 可以使用标准的 glob 模式匹配(glob 模式是指 shell 所使用的简化了的正则表达式) * 匹配模式最后跟反斜杠(/)说明要忽略的是目录 * 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反 Tips:Github 有一个十分详细的针对数十种项目及语言的 `.gitignore` 文件列表,[链接](https://github.com/github/gitignore)。 ### 2.2.4 查看已暂存和未暂存的修改 `status` 命令通过在相应栏下列出文件名的方式来展示文件的状态,而想要具体了解文件修改情况,可以使用 `diff` 命令将修改通过文件补丁的格式显示具体哪些行发生了变化。 显示工作区域文件(未暂存的文件)的修改: ``` $ git diff ``` 显示在暂存区域文件的修改: ``` $ git diff --cached $ git diff --staged ``` 显示两个版本的差异: ``` $ git diff [SHA-1] [SHA-2] ``` ### 2.2.5 提交更新 使用`commit` 指令可以将操作提交至仓库,并会启用编辑器获取本次的提交说明: ``` $ git commit ``` 可选参数项: * `-m`: 直接附带提交说明 ``` $ git commit -m"info" ``` * `-a`: 跳过暂存区域提交操作至仓库 ``` $ git commit -a ``` * `--amend`: 本次提交覆盖最后一次提交 ``` $ git commit --amend ``` ### 2.2.6 移除文件 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交,通过 `rm` 命令可以将文件从已跟踪文件清单和工作目录中一并移除。 ``` $ git rm [file] ``` 如果移除之前文件被修改过,并且已经放入暂存区,则需要使用强制删除选项 `-f` : ``` $ git rm -f [file] ``` ### 2.2.7 移动文件 在 Git 中重命名文件可以通过 `mv` 命令: ``` $ git mv [file_from] [file_to] ``` 该命令实际上相当于运行了下面三条命令: ``` $ mv [file_from] [file_to] $ git rm [file_from] $ git add [file_to] ``` 所以,即便是分开执行这三条命令,Git 也会识别这是一次改名操作。