git基础知识笔记

48 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

git已经成为我们日常开发工作中的一项必备技能,所以常用的基础操作必须得会。一些基本的概念必须得清楚。

git并不会记录被修改文件的差异,它保存的是所有文件(包括修改的与未修改的)的状态,也就是文件快照。

git中的基础概念

  • git工作目录:也就是git仓库的根目录,它包括其下的所有子文件/目录对象
  • git本地仓库:就是一个git仓库,只是存储于你的电脑本地,具体到磁盘就是.git文件夹
  • git远程仓库:不在本地的仓库,比如GitHub中的公开仓库,一般情况下我们的本地仓库都会有一个关联的远程仓库,或者叫做上游仓库
  • git暂存区:git本地仓库与工作目录之间的缓冲区
  • git忽略文件:git会扫描整个工作目录中当前的文件状态与git本地仓库中的最新提交记录的文件状态快照的差异,存在差异的文件(被修改)才会提示你进行添加到暂存区,但是可以在仓库中的各级目录中增加一个.gitignore文件来声明当前目录下的那些文件或者目录git不提示你,也就是排除于版本控制。父级目录以及子目录中都存在.gitignore时,子目录中的声明优先级更高。

git文件的三种状态

  1. 已提交(committed):对暂存区文件执行commit操作后的状态,此时文件已经保存到本地git仓库中。
  2. 已修改(modified):与本地仓库中最新的提交记录不一致的文件。
  3. 已暂存(staged):对已修改的文件执行add指令保存到暂存区之后的文件状态。

git的基本工作流程

image.png

从图中能非常直观明了的理解git的工作流程:修改文件、add文件到暂存区、然后将暂存区的文件commit提交到本地仓库。这里的add操作添加的文件可以是已经在git本地仓库中的文件,也可以是新增加的文件,但是不会是被忽略的文件(.gitignore文件中声明的文件或者目录)

git的三种配置级别

  1. 仓库级别:位于本地仓库(.git文件夹)中的config文件内的配置
  2. 用户级别:系统的当前登录用户家目录下的.gitconfig文件内的配置
  3. 系统级别:位于git的安装目录下的/etc/gitconfig文件内的配置(谨慎修改,特别是多用户同时使用的电脑,这里的修改会影响所有使用这个git程序的用户)

git仓库会优先使用仓库级别的配置,然后是用户级别,最后才是系统级别

修改git配置的两种方式

  1. 直接修改对应级别的配置文件,比如修改提交代码时的用户名以及邮箱信息
    [user]
            name = 用户名
            email = 邮箱
    
  2. 使用命令进行修改,不加命令最后面的值就是查看对应的配置信息
    //配置用户级别
    git config --global user.name "用户名"
    git config --global user.email "邮箱"
    //配置仓库级别
    git config user.name "用户名"
    git config user.email "邮箱"
    

怎样理解git的分布式

git仓库之间的交互非常的灵活丰富,我觉得其实远程仓库以及本地仓库是一个相对的概念,远程仓库是我们协同开发者人为的约定它是最终的仓库,大家都将最终确定的工作产出存放到上面,其实我们也可以将代码提交到任何一个“同事”的本地仓库中,也可以将其作为上游仓库进行拉取代码,当远程仓库意外挂掉或者被删除时,我们能通过我们的本地仓库进行“恢复”,同样我们的本地仓库太过混乱,被玩坏了的时候,也能通过远程仓库进行恢复。这看起来就像是同一个git仓库在很多地方都存了一份,大家各自提交各自的代码,然后进行定期的同步,只不过为了使得同步更加顺利不过于混乱,我们都统一在本地仓库中解决代码同步过程中的问题,然后将其推送到远程仓库。