# 1.查看工作区当前的状态
$ git status
# 删除了temp.html,但是存在暂存区,需要额外使用 git add temp.html
$ rm temp.html
# 2.删除temp.html,并且状态存在了暂存区
$ git rm temp.html
# 3.磁盘上仍然存在temp.html,但是通过git status会看到temp.html变成了一个untracked file
$ git rm --cached temp.html
# 4.重命名a.html为b.html
$ git mv a.html b.html
# 5.修改最后一次提交的commit记录信息,sourcetree中对应于“文件”中的“修改最后一次提交”的选项
$ git commit --amend -m '修订提交信息'
# 6.追加文件到最后一次的commit
$ git add temp.html
$ git commit --amend --no-edit
# 7.添加.gitignore中忽略的文件
$ git add -f 文件名称
# 8.某个文件的某一行代码是谁写的
$ git blame index.html
# 9.当使用git checkout 命令时,Git会切换指定的分支,但如果和面接的是文件名或路径,Git不会切换分支,而是把文件从 .git 目录中复制一份到当前的工作目录
$ git checkout
# 10.用距离现在两个版本以上的文件覆盖当前工作目录中的文件,同时更新暂存区中的状态
$ git checkout HEAD~2
# 11.下面三个命令中的^代表的是”HEAD“,”master“,指定提交版本的”前一次“
$ git reset HEAD^
$ git reset master^
$ git reset <commit版本号>^
# 12.结合git reset 找回被强制reset的内容
$ git reflog
# 13.计算blob对象的SHA-1值
$ git hash-object --stdin
# 14.查看git对象的信息 blob tree commit tag
$ git cat-file
# 15.查看当前文件在Git中的样子
$ git ls-files -s
# 16.git的回收机制
$ git gc
# 17.查看git回收中的打包情况
$ git verify-pack -v ./git/objects/pack/pack-......idx
# 18.输出当前项目的分支
$ git branch
# 19.增加分支
$ git branch 分支名称
# 20.更改分支名称
$ git branch -m name newName
# 21.删除分支
$ git branch -d name
# 22.如果要删除的分支没有被完全合并,强制删除
$ git branch -D name
# 23.切换分支,如果没有分支的情况下,直接创建
$ git branch -b name
# 24.落后的Commit的分支,在merge合并之后,就能处在同一个Commit上了
$ git merge 分支名称
# 25.不要快转模式
$ git merge name --no-ff
# 26.变基,rebase可以用来合并,但是它会改变原有的历史commit的顺序,如果不熟悉的情况下慎用
$ git rebase
# 27.ORIG_HEAD会记录“危险操作”之前HEAD的位置,分支合并、reset都算是“危险操作”
$ git reset ORIG_HEAD --hard
# 28.在rebase过程中如果出现冲突的情况下,解决冲突后使用如下命令继续执行rebase
$ git rebase --continue
# 29.修改历史信息互动模式,互动模式,就是在按照说明输入命令的情况下,会弹出vim编辑器,输入对应内容后保存退出
$ git rebase -i bc5a036
# 30.解决冲突文件,无法像文本一样合并解决冲突,使用如下方式来决定选择哪一个版本
$ git checkout --ours <文件>
$ git checkout --theirs <文件>