一: Git库的层次描述:
工作区(work Directory) --> 缓存区(staging area) --> 本地库(History)
二: Git常用命令总结:
1. git status --> 查看git的详细工作状态。
git status -s --> 同上,简单状态描述。
git init mygit --> 初始化一个git库
git log --> 查看git提交、工作日志
2. git add file(directory) --> 添加文件或目录到缓存区。
3. git commit -m '提交说明' --> 把文件从缓存区提交到本地库。
git commit --amend --> 修改最近一次的提交
4. git diff --> 查看工作区和缓存区的文件的差别。参数(--stat)表示简化查看方法。
git diff --staged --> 查看缓存区文件和本地库文件的差别。
git diff HEAD --> 查看工作区文件和本地库文件的差别。
git diff --stat HEAD --> 同上,简化查看工作区文件和本地库文件区别。
5. git reset file --> 从本地库文件中取出最新版本文件覆盖掉缓存区对应的文件。
git checkout file --> 从缓存区取出对应的文件覆盖工作区的文件。
git checkout HEAD file --> 从本地库文件中取出对应的文件覆盖掉工作区文件。获取HEAD的上一个版本文件使用
git checkout HEAD~1 file --> 多个使用:(HEAD~n)
6. git commit -am '提交说明' --> 从工作区直接提交到本地库的操作。参数(-a)是主要参数,不能省略。
7. git rm file --> 移除一个文件。
git rm --cached file --> 从缓存区删除指定的文件。
8. git mv old_file new_file --> 重命名文件
9. git stash --> 暂存工作区(一般紧急修复使用)
git stash list --> 查看暂存区的列表数据
git stash pop --> 展开暂存区的列表数据
10. commit对象的操作:
git cat-file -t HEAD --> 打印出:commit
git cat-file -p HEAD --> 打印出commit对象里包括的:tree、parent、author、committer、提交消息说明。
git cat-file -p blog、tree的hash值 --> hash值可以自动补全,写一部分即可。
11. git log --oneline --> 以列表形式展示commit提交的记录。
12. master: 分支的意思,在版本库中的:.git/refs/heads/master下,master指定的是一个commit对象。
HEAD --> master --> 最新commit对象.
13. git rev-parse HEAD --> rev-parse检查后面的字符串是否指向某一个对象:
git rev-parse HEAD == git rev-parse master 注: HEAD~ == master~ --> 执行了他们的parent对象
git rev-parse HEAD~4 == git rev-parse master~4
14. 定位到某一个commit对象下面的tree:
方法一:
git rev-parse HEAD~4^{tree} --> 结果为一个tree的hash码。
git cat-file -t hash码 --> 结果为tree对象。
git cat-file -p hash码 --> 打印tree对象的内容
方法二:
git rev-parse HEAD~4:文件路径 --> 结果为对应文件的hash码。
git cat-file -p hash码 或者
git show hash码(HEAD~4:文件路径) --> 定位到某个文件并打印查看文件内容。
注: git cat-file -p == git show 的功能一样。
15. 创建和删除分支:
git branch --> 查看所有的分支,*号对应的分支为当前操作的分支。
git branch new_branch --> 创建新的分支。
git checkout -b new_branch --> 创建新分支并切换到新分支上。
git checkout branch_name --> 切换到指定的分支。
git branch -d branch_name --> 删除分支
git merge branch_name(非master) --> 切换到master分支,然后把其他对应分支
提交的commit合并到master分支上。