日常操作
- git add:确定哪些文件将被纳入下一次提交
- git add --all:将所有修改纳入在内
- git add .:同上
- git add --interactive:代码段选取,只有被选取的那部分修改会以快照地形式被存储在暂存区中
- git commit:创建新的版本提交
- git status:查看哪些文件已被本地修改,以及哪些修改将被纳入下次提交
- git log:显示提交历史
- git diff:显示两个版本文件之间的差异
- git clone:创建某一个版本库的副本
- git push:由本地分支推送到远端分支
- git pull:由远端分支拉取到本地分支
- git checkout:检出操作,恢复到某一版本
- git merge:将不同的历史分支合并到一起
统计修改信息
- git log --stat:用来显示被修改的那些文件
- git log --dirstat:用来显示那些包含被修改文件的目录
- git log --shortstat:用来显示项目中有多少文件被修改,以及新增或删除了多少文件
格式化输出
- git log --format:控制日志的输出格式
- git log --format=fuller:显示细节信息
- git log --online:显示概述信息
日志选项
- git --graph:显示各提交之间的关系
部分输出
- git log -n 3:显示该项目的最后三次提交
status命令显示
- 被提交的修改:这部分将列出那些将在下次提交中被纳入版本库中的、被修改的文件
- 不会被更新的修改:这部分将列出那些已被修改,但尚未被注册到下次提交中的文件
- 未被跟踪的文件:这部分将列出所有的新增文件
- git status --short:输出关键信息
重新改变文件状态
- git reset HEAD (文件名):将文件移出暂存区,撤回修改
存储在暂存区的快照
- 暂存区中的是什么?
- git diff --staged # staging vs. repository:显示当前版本库中HEAD提交与暂存区之间的不同之处;
- 尚未被注册的又是什么?
- git diff # staging vs. workspace:显示暂存区与工作区之间的不同之处;
修改不被提交的方法
- 使用reset命令重置那些实验性的或者被意外修改的内容;
- 将我们不希望被提交的忽略文件列表写入.gitignore;
- 使用stash命令将我们希望日后再提交的修改内容暂时保存起来。
用.gitignore忽略非版本控制文件
- .gitignore文件中的条目只能影响那些当前还未交由Git来管理的文件
- 如果其中的某个文件已经被现有版本包含了,那么status命令依然会显示该文件上发生的所有修改,并且它一样可以通过add命令被注册到下次提交中;
- 如果想忽略一个已经被版本化的文件,可以通过update-index命令的–assume-unchanged选项来做到这一点。
储藏
- git stash:将工作区和暂存区中的修改保存在一个被我们称之为储藏栈(stash stack)的缓存区中
- 恢复被储藏的修改:
- 恢复位于栈顶的被储藏修改:git stash pop
- 检查储藏了什么修改内容:git stash list
- 恢复更早之前所储藏的修改:git stash pop stash@{1}