Git系列:常见指令辨析

Git系列:常见指令辨析

    • 指令辨析
      • 工作区、暂存区、版本库傻傻分不清楚?
      • 主干和分支的关系是什么?
      • git fetch/merge/pull辨析
      • 日志查看时,git log与git reflog的区别是?
      • git diff和status的区别是?
    • 相关资料

Git系列博客:

  1. Git系列:GitHub建仓及远端同步步骤总结,link
  2. Git系列:入门必备指令详解,link
  3. Git系列:常用操作一指禅,link
  4. Git系列:常见指令辨析,link
  5. Git系列:常见报错处理,link

本文小结常见Git概念辨析和指令对比释疑。

指令辨析


工作区、暂存区、版本库傻傻分不清楚?

  • 工作区:为本地直接可见可操作的文件,编辑器可直接修改的内容
  • 暂存区:.git目录下的内容,主要为目录索引index,不直接可见,git add后就是放在这儿,保存修改记录
  • 版本库:分为本地和远端,git commit后的结果放在本地版本库,git push后的结果推到远端版本库

主干和分支的关系是什么?

  • 相同处:都属于同一项目中的代码管理
  • 不同处:类似树的概念,主干如下图蓝色部分,分支如图中紫色和绿色部分
    • 主干,常称为master/trunk,常用于主体正式交付版本,主干经常合入分支的各种特性
    • 分支,常称为branch,常用于开发分支,分支是从主干分化而来
    • 进阶了解,请参考链接:菜鸟教程之branch
      Git系列:常见指令辨析_第1张图片

日常开发中常用三条线:

  • master主干
    • 正式release,全体审视,远端同步,多人
  • dev分支
    • 阶段release,开发人员,远端同步,多人
  • bug分支
    • 本地调试,开发个人用

Git的核心流程是基于分支进行协作,主干merge,然后删除分支。这也是其区别于SVN之所在。SVN是基于文件夹管理版本,Git是基于分支处理,总体仅一个仓。

git fetch/merge/pull辨析

  • git fetch本质,拉取远端仓库最新commit内容及其commit id到本地,合不合入另说(用户检查后,再用merge指令合入到本地分支);更新远端repo的各种主干和分支,将记录先存放在FETCH_HEAD中
  • git merge本质,如果本地操作git merge,就将拉取到的远端结果合入到本地工作;如果远端操作git merge,就将本地提交的结果合入到远端仓库。在fetch后单独合并远端到本地,指令:git merge FETCH_HEAD
  • git pull本质,等于 git fetch + git merge,将远程主机的最新内容拉下来后直接合并。
  • 进阶了解,请参考链接:git命令之git fetch的用法

日志查看时,git log与git reflog的区别是?

  • 指令辨析:log和reflog

  • log

    • 显示含远端仓库的commit日志版本提交,如果回退到以前的commit id版本,则只显示到回退后的版本id
      • 查看commit记录,如指令:git log -ggit log --pretty=oneline
  • reflog

    • 显示的是本地仓库的操作日志,包含删除的commit操作和reset操作,如指令:git refloggit reflog --pretty=oneline
  • 注意,在命令后追加 --pretty=oneline,可以简化输出,只显示commit版本号和提交时的备注信息;-g是以文本表格的形式展现

git diff和status的区别是?

  • diff,显示暂存区和工作区的文件差异,可查看已有文件前后的修改,不能查看新增文件的diff(新增文件diff本身是0和1的区别,直接查看新文件即可,不用比较前后差异),注意在git add 后无法查看
  • status,获取修改的文件列表,可以查看文件修改状态(不会告诉具体修改内容),可分辨是在工作区的修改,还是暂存区的修改

相关资料


  1. Git系列:入门必备指令详解,link
  2. Git系列:常用操作一指禅,link

你可能感兴趣的:(经验总结,git,github)