git的基本操作

✨前言✨

📘 博客主页:to Keep博客主页
🙆欢迎关注,👍点赞,📝留言评论
⏳首发时间:2024年6月19日
📨 博主码云地址:博主码云地址
📕参考书籍:《C++ Primer》《C++编程规范》
📢编程练习:牛客网+力扣网
由于博主目前也是处于一个学习的状态,如有讲的不对的地方,请一定联系我予以改正!!!

1 认识git

git说白了就是一个版本管理器,举个例子来说,就是我们在做某个ppt的时候,是不是要修改好几个版本,那我们是咋知道是那一个版本,做了哪些修改?我们可以将每个版本都保存,并且改好备注!并且把每次修改(这里的修改指的就是增加,删除,修改等操作)的内容记录下来!而git就是帮我们做了这样的一件事记录修改内容,从而可以通过回退等操作,得到我们所需要的版本!而对于我们软件开发行业来说,主要就是帮助我们来管理源代码的!gitee与github实际上就是基于git开发的,增加了网页功能,是一个远程代码托管平台,也就是我们常说的远程仓库!本次学习过程,都是在Linux系统中centos环境下,对git进行操作!在Windows与Mac也是类似的!
先安装git(在非管理员用户下),命令如下:

sudo yum -y install git

我们可以通过查询git的版本(或者直接使用git命令),来验证是否安装好了git

git --version //查询git的版本

2 创建本地仓库

仓库的本质就是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。使用如下命令,注意命令要在⽂件⽬录下执⾏!

git init

如下图所示,出现了以下的隐藏文件就说明我们创建好了本地仓库!
在这里插入图片描述

2.1 配置Git

在创建好本地仓库的目录下,对git仓库进行配置!首先就是设置自己的用户名称和email地址!

git config [–global] user.name “Your Name”
git config [–global] user.email “email@example.com”
这里的Your Name指的就是你的昵称,在把email@example.com换成你自己的邮箱地址!global是一个可以选择的选项!选择使用global就是代表这台机器上的所有仓库都是使用上述的用户名与邮箱的配置!如果只要当前所在的仓库使用某一个用户名与邮箱,是可以不用global的

如下图所示,就是设置自己的用户名与邮箱
在这里插入图片描述

查看自己的配置命令如下图所示
在这里插入图片描述
删除对应配置的命令

git config [–global] --unset user.name    ~~   "用户名”
git config [–global] --unset user.email    ~~   “用户邮箱”

2.2 工作区,暂存区与版本库的认识

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

我们可以用一张图示来表示git仓库这三个区之间的关系

在这里插入图片描述

对于工作区的修改的内容,我们可以使用git add命令改变暂存区的目录树,同时会生成git对象放到objects库中,在通过git commit命令,才算是写入master分支中,算是被本地仓库所管理了!具体使用的命令如下所示:

git add 文件(文件1 文件2)/目录 就是将1个或者是多个文件或者是目录(包括下面的子目录)修改的内容添加到暂存区
git add . 添加当前⽬录下的所有⽂件改动到暂存区
git commit -m “message” 提交暂存区全部内容到本地仓库中
git commit [file1] [file2] … -m “message” 提交暂存区的指定⽂件到仓库区

上面的message的内容,由⽤⼾⾃⼰完成,这部分内容绝对不能省略,并要好好描述,是⽤来记录你的提交细节,是给我们⼈看的。方便以后我们进行排查,做了哪些操作,我们还可以多次add不同的⽂件,⽽只commit⼀次便可以提交所有⽂件!
做完上述的操作,我们就可以使用命令来查看,我们所提交到仓库中的修改记录了

git log 该命令显⽰从最近到最远的提交⽇志,并且可以看到我们commit时的⽇志消息。

在这里插入图片描述
commit后面跟着的叫做commit id,我们就是根据这个id来进行版本回退,以及查找修改的内容的,这里的test1就是我们message的内容,如果嫌输出信息太多,看得眼花缭乱的,我们可以使用如下命令,来输出主要的信息

git log --pretty=oneline

在这里插入图片描述
这里就只剩下了commit id与我们自己备注的信息了!这也进一步说明,我们在commit的时候,message要好好的写!同时需要注意的是在提交本地仓库管理,就必须要经过add与commit两个操作!

3 git的目录结构

我们可以使用如下命令查看git的目录结构

tree .git

1️⃣index 就是我们的暂存区,add后的内容都是添加到这⾥的。
2️⃣HEAD 就是我们的默认指向master分⽀的指针,⽽默认的master分⽀,其实就是保存的就是当前最新的commit id。
3️⃣objects 为Git的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏git add命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于".git/objects"⽬录下。查找object时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。找到这个⽂件之后,⼀般不能直接看到⾥⾯是什么,该类⽂件是经过sha (安全哈希算法)加密过的⽂件,好在我们可以使⽤ git cat-file -p commit id命令来查看版本库对象的内容!
在这里插入图片描述
我们可以继续通过上述命令,将commit id换成tree之后的commit id就可以看出修改了啥内容了!修改的内容多了,也会出现parent后面加上commit id,此时的commit id指的就是上一次提交的内容!

4 修改文件

我们需要明确的一点就是,git跟踪管理的是文件修改的内容,而不是文件!这里的修改不仅仅就只限于修改文件,也包括增加文件(目录),删除文件(目录)!我们可以通过以下命令,来查看上一次提交到现在是否进行了修改

git status

如下图所示,我新建了一个文件,再次使用git status就查出来了新建立了一个file1文件,没有上传到暂存区,需要先上传到暂存区,在进行commit操作,才算上传到本地仓库中!

在这里插入图片描述
我们也可以通过以下的命令来查看修改的内容

git diff filename //用于显示工作区与暂存区文件的差异
git diff HEAD --filename //用来显示版本库中与工作区中文件的区别

5 版本回退

在git中,我们也提供了命令,供我们回退到之前的版本!命令格式如下所示:

命令语法格式为: git reset [–soft | --mixed | --hard] [HEAD]

如下图所示,我是写了个test.c文件,然后提交两次,我是将它回退到上一个版本,我们在这个基础上来理解三个指令的作用:
在这里插入图片描述
所以三个指令的作用总结如下

–soft :版本库里的内容回退到某个版本,其他两个区内容不变
–mixed:工作区的内容不变,其他两个区的内容回退到某个版本
–hard:三个区都回退到某个版本,这个参数要慎用一点,因为工作区的代码一旦没有及时提交,是找不回来的!

HEAD参数的作用:
1️⃣ 可直接写成commit id,表⽰指定退回的版本
2️⃣ HEAD或者HEAD~0表⽰当前版本
3️⃣HEAD^ 或者HEAD~1来表示上⼀个版本, HEAD^^ 或 HEAD~2表示上上⼀个版本,以此类推!

实际上,git的版本回退操作是非常快的,原理图如下所示:
在这里插入图片描述
也就是说,我们只需要改变master指针的指向就可以回退到那个版本了,前提就是我们必须知道该版本对应的commit id

6 撤销修改

如果我们在我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在是垃圾,想恢复到上⼀个版本!我们该如何操作,此时分为了以下几种情况来进行处理!如下图所示,我们对于test.c新增一行hello linux,主要分为以下三种情况讨论(都是基于在本地仓库的操作,并没有提交给远程仓库),红线表示撤销之后不存在了的内容:

  • 对于工作区中的代码,还没有ADD
  • 已经ADD的代码,没有commit
  • 已经ADD的代码,并且已经commit

在这里插入图片描述

7 删除文件

在git中,如果是误删,可以采取撤销或者版本回退操作进行恢复,如果确实是要进行删除操作,可以采用下面两个命令来进行删除!

git rm filename //删除
git commit -m “delete filename”

对于git的基本操作大概就是以上这些,下面将进一步的学习git分支!

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

to Keep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值