Git系列:常见指令辨析
- 指令辨析
- 工作区、暂存区、版本库傻傻分不清楚?
- 主干和分支的关系是什么?
- git fetch/merge/pull辨析
- 日志查看时,git log与git reflog的区别是?
- git diff和status的区别是?
- 相关资料
本文小结常见Git概念辨析和指令对比释疑。
指令辨析
工作区、暂存区、版本库傻傻分不清楚?
- 工作区:为本地直接可见可操作的文件
- 暂存区:.git目录下的内容,主要为目录索引index,不直接可见,git add后就是放在这儿
- 版本库:分为本地和远端,git commit后的结果放在本地版本库,git push后的结果推到远端版本库
主干和分支的关系是什么?
- 相同处:都属于同一项目中的代码管理
- 不同处:类似树的概念,主干如下图蓝色部分,分支如图中紫色和绿色部分
- 主干,常称为master/trunk,常用于主体正式交付版本,主干经常合入分支的各种特性
- 分支,常称为branch,常用于开发分支,分支是从主干分化而来
- 进阶了解,请参考链接:菜鸟教程之branch
git fetch/merge/pull辨析
- git fetch本质,拉取远端仓库最新commit内容及其commit id到本地,合不合入另说(用户检查后,再用merge指令合入到本地分支)
- git merge本质,如果本地操作git merge,就将拉取到的远端结果合入到本地工作;如果远端操作git merge,就将本地提交的结果合入到远端仓库。
- git pull本质,等于 git fetch + git merge,将远程主机的最新内容拉下来后直接合并。
- 进阶了解,请参考链接:git命令之git fetch的用法
日志查看时,git log与git reflog的区别是?
-
指令辨析:log和reflog
-
log
-
- 显示含远端仓库的commit日志版本提交,如果回退到以前的commit id版本,则只显示到回退后的版本id
- 查看commit记录,如指令:
git log -g
或git log --pretty=oneline
- 查看commit记录,如指令:
- 显示含远端仓库的commit日志版本提交,如果回退到以前的commit id版本,则只显示到回退后的版本id
-
reflog
-
- 显示的是本地仓库的操作日志,包含删除的commit操作和reset操作,如指令:
git reflog
和git reflog --pretty=oneline
- 显示的是本地仓库的操作日志,包含删除的commit操作和reset操作,如指令:
-
注意,在命令后追加
--pretty=oneline
,可以简化输出,只显示commit版本号和提交时的备注信息;-g
是以文本表格的形式展现
git diff和status的区别是?
- diff,显示暂存区和工作区的文件差异,可查看已有文件前后的修改,不能查看新增文件的diff(新增文件diff本身是0和1的区别,直接查看新文件即可,不用比较前后差异),注意在
git add
后无法查看 - status,获取修改的文件列表,可以查看文件修改状态(不会告诉具体修改内容),可分辨是在工作区的修改,还是暂存区的修改
相关资料
- Git系列:入门必备指令详解,link
- Git系列:常用操作一指禅,link