初识git · 基本操作

海哥  金牌会员 | 2024-10-15 10:22:08 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

目录
前言:
基本操作
查抄是否存在git
初始化仓库
熟悉三个区域
添加文件
检察.git文件
修改文件
版本回退
打消操作
删除文件

我的博客即将同步至腾讯云开发者社区,邀请各人一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2n55ocfzqhogk
前言:

Git 是一个开源的分布式版本控制系统,最初由林纳斯·托瓦兹(Linus Torvalds)于2005年开发,目的是为了更好地管理Linux内核的开发过程。与传统的集中式版本控制系统(如SVN)差别,Git允许开发者在当地举行完备的版本控制操作,包括提交、分支和归并,而无需依赖网络连接到中心服务器。
Git的核心概念包括仓库(Repository)、工作目录(Working Directory)、暂存区(Staging Area)和提交(Commit)。开发者在当地仓库中工作,修改文件后可以将这些变更添加到暂存区,然后通过提交操作将这些变更记载到仓库的汗青记载中。
Git还支持分支和归并操作,使开发者能够在不影响主分支稳定性的环境下举行新功能开发或实验性修改。分支操作是轻量级的,险些可以刹时创建和切换,这极大地进步了开发效率和灵活性。
别的,Git还具有强盛的网络功能,支持通过HTTP、SSH等协议举行仓库的克隆、推送和拉取操作,使得多个开发者可以协同工作,共享代码变更。
总之,Git以其分布式的设计、高效的分支和归并操作以及强盛的网络功能,成为了现代软件开发中不可或缺的版本控制工具。

基本操作

由前言的介绍,我们知道git强盛的地方来源于版本控制,那么除了版本控制,我们要学习的基本操作有:
熟悉三个区域->添加文件->修改文件->版本回退->打消修改的三种环境->删除文件
这是本文的目的。
查抄是否存在git

开始之前,我们应该先查抄自己的机器里面是否存在git这个工具:

下令:git --version,可以检察git的版本,

ubuntu的系统下,删除git的下令是:sudo apt remove git -y,此时检察:

那么ubuntu重新安装git的下令为:sudo apt install git。

初始化仓库

那么有了git这个工具,我们应该新建一个仓库,并且要对仓库初始化,在图形化界面中,我们新建仓库的时候每每也是需要初始化的:

使用的下令是git init,此时初始化了仓库之后,在当前目录下就会创建当地仓库,标志是.git。
此时.git创建好了之后,比较紧张的是我们最好配置名字,以及邮箱等:

通过下令git config user.name 等,初始化自己的信息。
那么我们怎样看对应的配置信息呢?输入下令:git config -l即可:

此时对应的配置信息就打印出来了。
那么我们既然已经创建了.git,我们不妨使用tree看一下这究竟是个什么玩意儿:

这就是对应git的树状图,当然,里面有很多东西我们目前都不知道,不消急,咱也就先看看而已。
初始化配置的时候,我们还可以使用--global参数,表示全局的,也就是这台机器上的所有仓库都可以使用这个配置:


那么为了测试,我们再创建一个仓库:


验证成功。
那么删除对应的配置也很简朴,使用unset即可:

但是不能一次性删除多个,只能一个一个删除:
仓库的初始化配置就到这里。
熟悉三个区域

git中的三个区域:

在git中,这三个区域,分别是工作区,暂存区,版本库,三个区域的取名还是比较生动形象的。
工作区,也就是平时我们存储代码的地方,暂存区,也就是经过一次add操作之后,代码的临时改动被存储到了暂存区,版本库,代码的更改都会放在这里面,并且是永久存储的。
其中,工作区到暂存区,需要Add,暂存区到版本库,需要commit,但是我们寻常使用图形化界面的时候,上传到远端仓库还需要一个操作是push,目前我们学习的操作都没有涉及push,都是在add和commit。
对于暂存区,也有一种说法叫做索引,并且在暂存区和版本库里面还有一种区域,叫做objects,没错,就是这个:

objects也就是对象的意思,这实际上是个对象库,修改的工作区的内容会写入其中的git对象.
添加文件


我们添加文件有两种方式,一种是git add 修改的文件名 ,一种是git add . ,这个.就是当前目录的所故意思,也就是当前目录的所有修改都要加上,add之后,通常伴有git commit ,但是commit通常需要选项-m,-m的意思是提交日记,也就是:

这里需要留意的是,-m之后的描述是比较紧张的,比如boss让你写了500个版本,假如每次commit的日记都是1,那么是很难举行版本回退的,因为都是1,没有描述详细添加还是删除了哪些功能,版本控制就变得麻烦起来了。
commit之后,有对应的介绍,1file changed ,一个文件改动了,0 insertions,代表没有行数增加,0 deletions代表没有行数减少。
我们也可以一次性,多添加多个文件:

这里需要再介绍一个下令,叫做git log,一般的软件都是有日记的,可以明白为日记的意思,它会记载该软件发生的所有事:

其中HEAD -> master是什么我们临时不消管,前面的很大的16进制的数字是根据某种规则天生的,我们知道即可。
后面有对应的Author,Email,以及对应的日期,最后的就是提交的描述的。假如我们嫌打印出来的东西太多了,我们可以输入git log --pretty=oneline:

也就是将每次的提及以一行的方式打印。
那么在add commit操作里面我们看到了极其庞大的式子,还有HEAD -> master,我们可以通过检察.git文件来了解它们。
检察.git文件

根据最开始的git图:

我们如今不妨对比一下已经commit两次之后的git:

为什么暂存区还有一个名字叫做索引,就是因为我们commit之后,git之后新增了一个index,也就是暂存区的索引。
关于HEAD指针的题目,我们可以打印HEAD出来看看:

可以发现HEAD指针指向的就是master,那么master里面又有什么呢?再看看:

是一串很大的16进制的数字,那么这串数字又是啥?我们可以使用指令来检察:
指令git cat-file -p [数字]:

出现了我们熟悉的信息,第一个是tree,不管先,parent是我们前次提交对应的commit id,author等就不消介绍了,那么tree对应的是什么呢?我们使用指令再看看:

这些就是对应提交过的文件了,那么里面的数字又是什么意思呢?实际上是我们add之后,在文件里面举行了修改的内容,因为博主add的时候没有加东西,以是各位同砚可以自行演示哦。

在git里面,对象库里面存在的13的是对应的对象。
修改文件

这里的修改文件并不是我们在git里面修改文件,我们检察修改文件之后git对应的状态,我们如今在file1新增内容:

此时使用指令git status:

此时file1文件变红,图形化界面也会有一个赤色提示符,此时,nothing added to commit ...也就是说暂存区没有内容需要commit的,那么此时我们使用指令git diff:

其中index索引后面的我们不管,a/file1表示改动前的fie1,b就是改动后的。
---也是改动前,那么-0,0, +1是代表的行数厘革,后面打印出来了对应的行增加了什么。
0,+1代表从改动后的0行开始新增1行。
这是修改文件。
这就是看的在暂存区和工作区之间的内容区别,当然也有暂存区和版本库的,各位同砚可以自己试试哦。
版本回退

版本回退作为git最紧张的一个功能,如今就揭开对应的荧幕,那么我们新造一个场景,重新提交一下文件,从file1到 file5 ,修改file1为Hello git ,到加上Hello world:

为了举行版本回退,使用的函数是reset,对应的选项有 --soft --mixed --hard,默认使用指令reset的时候选项是mixed,从soft到mixed到hard的,回退的环境是由轻到重的:

使用soft只会修改版本库的内容,mixed会修改暂存区和版本库的内容,hard会修改三个区的内容,以是hard肯定是要慎用的。因为可能别人正在工作区写代码呢,你一个hard,框的一下给人代码全部干没有了,这就是一件很悲催的事儿。
那么我们如今演示一下hard,其他两个自然也就会了:

表示如今在当前版本。
我们也可以直接用HEAD指针,HEAD^表示上个版本,^^代表上上个,也可以使用~ + 数字表示,~ + 1代表上一个版本:

当我们成功回退到了上个版本,我们看看修改的file1的内容是怎么样的:

此时只有Hello git了,那么我们可以吃后悔药不呢?可以的,我们假如系统还没有退出来,可以看到对应的commit id,就可以:

此时:

那么假如我们的系统已经退出来了,看不到对应的id怎么办?我们可以:

此时有个收缩的commit id,也可以直接用的,我们可以利用该commit id直接回退,那么为什么git的版本回退那么快呢?
这是因为:
每次commit之后,返回的commit id实际上是差别的git对象,master指针只需要改变一下指向即可。
打消操作

打消操作分为三种,新增的代码还没有add,新增的代码已经add了但是没有commit,新增的代码不仅add了还commit了,对应只有这三种环境。
第一种环境:
假如我们还没有add,并且新增的代码并不是很多的环境下,我们不妨手动删除,但是在企业中,代码量都是比较多的,我们不能包管我们可以手动删除完全正确,我们盼望代码回到最近一次add的时候,以是我们可以使用指令git checkout -- [filename]:

第二种环境:
已经add了,但是还没有commit,那么我们需要修改的就是暂存区,这就故意思了,我们可以直接使用版本回退的指令,mixed,修改暂存区的内容,但是不修改工作区的内容,此时就变成了怎样修改工作区的内容,这不就回到了环境一了吗?


第三种环境:
那就更简朴了,直接hard指令即可,只能说庆幸没有push到长途仓库吧,push了可就真的麻烦了,这里就相称于版本回退的操作,就不做实例了。
删除文件

删除文件就简朴多了,我们对于普通的文件可以直接rm -rf,但是git里面,我们可以直接git rm filename:

如允许以在工作区删除对应的文件。假如直接rm,代表的只是当地删除了而已,仓库没有删除,

此时git的状态也会发生厘革。
那么仓库删除了之后,commit一下:

此时,就干净了很多。 

感谢阅读!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表