从零开始的git学习之旅-初识Git


前言

自我学习过程中,需要使用Git的场景越来越多,因此有必要对其进行进一步的学习。本文主要介绍了对Git的初步认识,包括Git的基本操作与操作原理,理解工作区,暂存区,版本库的含义。


一、Git基本操作

Git是一个版本控制器,记录每次的修改以及版本迭代的一个管理系统,该系统可以控制电脑中所有格式的文档。那么,Git怎样才能进行管理呢?被管理的文件必须放在仓库中,才能被Git进行追踪管理

1.创建本地仓库

仓库是进行版本控制的一个文件目录。为此,我们要进行文件的版本控制,必须先创建一个仓库。
创建仓库的命令是 git init ,一定注意该命令是在文件目录下执行的。
分别执行如下命令。

mkdir gitcode     #创建一个名为gitcode的文件目录
cd gitcode/       #进入gitcode目录

git init          #创建仓库

创建仓库
可以看出,当前目录中多了一个 .git的隐藏文件, .git目录是Git进行追踪管理仓库的无论何时,都不用手动的对其内容做任何的修改,不然该乱了,仓库就被破坏了!!!

2.配置Git

当仓库创建好后,首先要做的就是设置自己的用户名称email地址,这是非常重要的。至于按照何种规则设置,这是后话了,现在就按照自己的意愿进行设置。

#设置用户名称
git config [--global] user.name 'Your name'

#设置email地址
git config [--global] user.email 'Your email'

#查看配置结果
git config -l

#删除配置
git config [--global] --unset user.name
git config [--global] --unset user.email

–global是一个可选项,使用后,在自己的主机上所有的Git仓库均会采用如下配置。如果不希望这样,也可以不加。
配置用户名与邮箱地址

二、工作区,暂存区与版本库

1.初步认识

工作区:在电脑中放代码或者文件的目录。
暂存区:英文名为 stage或者index。 一般存放在.git 目录下的index文件中。
版本库:英文名为 repository。在创建仓库时产生的 .git隐藏目录就是Git的版本库。 版本库中的所有文件均会被Git管理起来,每个文件的修改,删除,Git均能机械能跟踪,以便任意时刻进行历史追踪,或者还原成某个时刻。
在这里插入图片描述
图中,,git目录就是版本库,除了该目录,在gitcode目录下的区域就是工作区。
如下,展示了这三种之间的关系。
工作区,暂存区,版本库三者的关系
在创建Git版本库时,会自动创建一个唯一的master分支,以及执行master的一个指针HEAD。 至于其作用是什么,在第三章会给出答案。
当工作区新增或者修改文件执行git add命令时,暂存区的目录树的文件索引会更新
当执行git commit时,master分支会进行相应的更新,简单理解为暂存区的目录树才真正更新到版本库。
我们可以看出,我们平时在目录下的操作都只是在工作区进行的操作,这些操作并不会被进行记录或者管理,只有经过 git add和git commit后才能将文件添加到仓库进行管理

2.基本使用

#将工作区的内容提交到暂存区
git add [file1] [file2] ....  #添加一个或者多个文件
git add [dir]                 #添加目录
git add .                     #将当前目录下的所有改动添加到暂存区

#将暂存区的内容提交到版本库
git commit -m '说明内容'
git commit [file1] [file2] ... -m '说明内容'

将当前目录下的所有改动添加到暂存区,那么什么是改动?
改动新增 修改 删除
git commit后有-m选项,后面跟上描述信息,这部分内容是必须要写的,并且要好好进行描述,这是记录自己的提交细节的,是给人看的。
提交过程
如图,commit后,2个文件改动(新增的文件)。
我们可以用git log 来查看历史提交记录。

#查看历史提交记录
git log

#如果嫌弃信息太多,则添加 --pretty=oneline参数:
git log --pretty=oneline

在这里插入图片描述
可以看出,如上有一串特别长的字符串,这实际是每次提交的commit_id(版本号),这是一个很重要的东西,但后面再说。

3.查看 .git 文件

前文说过,git init可以进行仓库的创建,创建后会出现一个隐藏目录.git,通过 tree命令查看 .git目录结构。
在这里插入图片描述

  1. index就是暂存区,add的内容就是放在这里。(此时已经commit,故里面没有内容)
  2. HEAD是默认执行master分支的指针
    在这里插入图片描述
    前面说过,这一连串的字符串是commit_id,如果细心观察,就可以发现这与基本使用中第二幅图中的commit_id是一致的,这说明了什么?
    =》实际上,master保存的是当前最新的 commit_id
  3. objects:包含了创建各种版本库对象及内容,简单理解为存放了git维护的所有修改。

4.进一步理解

进行如下的操作。

touch file3               #新增文件3
git add file3             #将其添加到暂存区
touch file4               #新增文件4
git commit -m 'add file'  #暂存区内容提交到版本库

在这里插入图片描述
图中可以看出,新增了两个文件,但只显示了一个文件变动,这是为什么? 由前面的知识就知道,这是因为文件4并没有被放入到暂存区,工作区的文件是不会被,git进行追踪管理的

5.修改文件

git之所以比其他版本控制器优秀,就是其跟踪并管理的不是文件,而是改动。由前文知道,改动是指: 新增,删除,修改。
对readme文件进行一次修改:
在这里插入图片描述
这之中对readme进行一次提交,之后新增一行printf,通过git status查看对于上次提交后是否对文件再次修改。

在这里插入图片描述
可以看出,readme文件被修改了,但还未进行添加和提交。
目前,只知道文件被修改了,如果想知道具体哪些地方被修改了就更好了。而且如果,代码是好几天前写的,那就更需要了,因为可能已经记不清改动了。

#查看工作区和暂存区的差异
git diff file_name

在这里插入图片描述
a表示改动前,b表示改动后。 -表示该动前,+表示改动后。1,2表示行号。知道了修改内容,就可以放心的提交到本地仓库了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值