1.简述Git的原理和操作流程

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
image.png
2.什么是版本控制系统?为什么需要版本控制系统?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 除了项目源代码,你可以对任何类型的文件进行版本控制。
有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
3.git fetch和git pull命令的区别?

  • git fetch是从远程获取最新版本到本地,但不会自动merge
  • git pull则是会获取所有远程索引并合并到本地分支中来。效果相同时git pull将更为快捷。

git pull = git fetch +git merge
4.git rebase和git merge命令的区别?

  • merge 是一个合并操作,会将两个分支的修改合并在一起
  • merge 的提交历史忠实地记录了实际发生过什么,关注点在真实的提交历史上面
  • rebase 并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面

5.什么是Git Flow,它有什么好处?
Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架,是一个 git操作流程标准、解决当分支过多时 , 如何有效快速管理这些分支。
6.什么是暂存区,为什么需要暂存区?
保证提交的原子性,即每一个提交都是由多个文件的修改组成,而且这个提交是原子性的,要么这些修改全部成功,要么全部失败。原子性提交使得把项目整体还原到某个阶段或者时间点变得极为简便。