目录

1.创建Git本地仓库

1.1创建仓库

1.2创建和初始化Git本地仓库

1.3查看隐藏目录.git

2.配置本地仓库

2.1新增配置

2.2删除重置配置

2.3查看配置选项

2.4全局范围的新增和删除配置

3.工作区、暂存区、版本库、对象库

​4.add操作和commit操作

4.1add操作

4.2commit操作

4.3对象库


1.创建Git本地仓库

❓用git维护的文本文件和二进制文件,是可以存在服务器的任意位置吗?

当然不可以,这样git就不能进行追踪和管理了。

如果我们想要把git管理和追踪这些文件,我们必须把这些文件放到git仓库里面。

只有放到git仓库的文本文件和二进制文件才能被git管理和追踪。

1.1创建仓库

❗要提前说的是,仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。 

 mkdir gitcode

1.2创建和初始化Git本地仓库

git init

1.3查看隐藏目录.git

我们发现,当前⽬录下多了⼀个 .git 的隐藏⽂件, .git ⽬录是 Git 来跟踪管理仓库的,不要⼿动
修改这个⽬录⾥⾯的⽂件,不然改乱了,就把 Git 仓库给破坏了。 

ll -a
tree .git

2.配置本地仓库

name 名称 和 email 地址 必须要配置。如果不配置,将来我们对本地仓库进行操作的时候,出现一系列的问题(报错)所以创建完本地仓库,马上配置它们。

使用 git config 命令就可以为我们本地仓库设置一些配置项了。

2.1新增配置

[root@tangsiqi gitcode]# git config user.name "tsq"
[root@tangsiqi gitcode]# git config user.email "2784139418@qq.com"

【注:前面的配置项是我们在创建本地仓库默认为我们自动配置的配置项】 

2.2删除重置配置

[root@tangsiqi gitcode]# git config --unset user.name
[root@tangsiqi gitcode]# git config --unset user.email

2.3查看配置选项

git config -l

2.4全局范围的新增和删除配置

一台服务器上不止可以创建一个本地仓库,一台服务器上可以创建多个本地仓库。

git config --global 加上--global表示我们配置的配置项是会在当前机器所有的git本地仓库都生效的。

[root@tangsiqi gitcode]# git config --global user.name "tsq"
[root@tangsiqi gitcode]# git config --global user.email "2784139418@qq.com"

[root@tangsiqi gitcode]# git config --global --unset user.email
[root@tangsiqi gitcode]# git config --global --unset user.name

3.工作区、暂存区、版本库、对象库

  • Git是一个版本控制系统。
  • 使用Git可以对我们电脑上所有格式的文件进行跟踪和管理。
  • 前提将被管理的文件放到git仓库里面维护。

现在我们尝试在gitcode下新建一个ReadMe文件,让Git来管理管理!

  • 目前这种情况下ReadMe文件在gitcode目录下能否被管理❓当然不可以。
  • Readme所在的gitcode不是本地仓库,真正的git仓库是隐藏的.git 才能被我们称为git仓库。又称版本库。Git版本控制系统,所有.git也叫版本库。
  • 那么我们ReadMe放到版本库.git下能被管路吗❓不可以且不被允许。
  • 不允许在.git中进行任何手动修改。一旦修改,可能导致整个本地仓库不能使用报废了。

  • 综上所述,只能将被管理的文件放到gitcode工作目录下。和.git同级目录下。所以git就把像gitcode这样的目录称为工作区。


⼯作区:是在电脑上你要写代码或⽂件的⽬录。
暂存区:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们
把暂存区有时也叫作索引(index)。
版本库:⼜名仓库,英⽂名 repository 。⼯作区有⼀个隐藏⽬录 .git ,它不算⼯作区,⽽是Git 的版本库。这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

下⾯这个图展⽰了⼯作区、暂存区和版本库之间的关系:

  • 图中左侧为⼯作区,右侧为版本库。Git 的版本库⾥存了很多东西,其中最重要的就是暂存区。

  •  在创建 Git 版本库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀,以及指向 master 的⼀个指针叫 HEAD。(分⽀和HEAD的概念后⾯再说)

  • 当对⼯作区修改(或新增)⽂件执⾏ git add 命令时,暂存区⽬录树⽂件索引会被更新。

  • 当执⾏提交操作 git commit 时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。


  • 工作区:Readme所在的gitcode目录就是git的工作区。注意❗.git虽然在工作目录下,但是不属于工作

  • 版本库:.git文件

  • stage/index  暂存区/索引  

  • head指针 指向了master分支(暂时不讲,后面会讲解)

综上所述:由上述描述我们便能得知:通过新建或粘贴进ReadMe⽬录(工作区)的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中进⾏管理!!!

4.add操作和commit操作

4.1add操作

此步操作:将工作区中所有文件的修改内容 添加进版本库的暂存区中。

  • ❗❗三部分内容:工作区新增文件+修改已经存在的文件(增删改)+删除文件操作
  • 暂存区存放的是修改对象的索引(轻量级)
  • Add的时候,会在版本库的对象区新增一个git对象。
  • 注意:虽然.git的暂存区已经有工作区文件的修改内容了,但是不算将真正内容写入版本库。

4.2commit操作

此步操作就是将 暂存区的内容 提交到master分支下。此步完成之后,才能真正意义上说将修改的内容放到版本库中。

  • commit是将暂存区的树状结构 写到 master分支下,master分支下也是一个一个的树状结构(目录树),也是一个个对象的索引。(轻量级)。
  • 只要能拿到head,head是一个指针。就能拿到master这棵目录树。就可以拿到文件具体修改的内容。就可以管控文件了。
  • 完成以上两步,才能真正意义上来说用git来管理我们git仓库中的文件Readme文件。

4.3对象库

版本库中还存在一个模块,被版本库维护着——对象库 

  • 对象库:objects(里面存储着的git对象)
  • 在Add操作的时候,暂存区在新增工作区的修改内容的同时,也会创建和将修改内容写入git对象。
  • Git对象会被维护到git版本库中的对象库objects中。Git对象存储的是Add一次的修改工作区文件的内容。
  • 维护文件所有的版本 == 维护git版本库中对象库中所有的git对象中的内容(内容是工作区的Add的修改内容)
  • 暂存区存放的是修改对象的索引(轻量级)

  • master分支下也存放是对象的索引。

  • 修改的工作区的内容会写入对象库的一个新的git对象中。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐