Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作

这篇具有很好参考价值的文章主要介绍了Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言 

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

高质量博客汇总https://blog.csdn.net/yu_cblog/category_12379430.html

然后就是博主最近最花信息的一个专栏《Git企业开发控制理论和实操》希望大家多多关注!
Git企业开发控制理论和实操https://blog.csdn.net/yu_cblog/category_12419275.html?spm=1001.2014.3001.5482

博主的Github主页

里面都是一些博主自己做的项目,希望对大家有帮助。

Yufccode (Fengcheng Yu) · GitHubfocus on backend development. Yufccode has 12 repositories available. Follow their code on GitHub.https://github.com/Yufccode


Git的基本操作

创建本地仓库

命令:git init

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

创建好之后会多一个 .git 目录,里面是什么我们先不管,后面再说。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

 不要手动修改里面的任何内容!

配置本地仓库

一进去之后首先要配置的两个东西,是一定要配置的

  • name
  • email

如果不配置在后续就会有一系列的问题。

配置使用 git config 命令

git config user.name "xxx"
git config user.email "xxx"

检查是否配置好了:

git config -l # 检查config中的所有配置

删除配置:

比如删除名字

git config --unset user.name

全局设置:

表示可以在当前机器下的所有仓库中都生效。

git config --global user.name "xxx" # 全局设置
git confit --global --unset user.name # 全局重置

认识工作区、暂存区、版本库

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

现在,请问这个git仓库可以管理这个README.md吗?

答案是还不可以。因为本质上.git才是仓库,外面不是。

但是.git是绝对不允许手动修改的。

其实.git里面叫做版本库(仓库),外面叫做工作区。

那么怎么样才能让README.md被管理呢?要进行一些操作。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据 

这张图的工作区,就是README.md所在的地方。

stage可以称作暂存区/索引,即/index

HEAD是一个指针,只想master,这个概念我们到后面再理解。

添加文件

git add

本质是添加到stage中!

命令:

git add # 后面跟上文件名
git add . # 添加当前所有问题
git add file.log test.txt # 添加指定文件
git commit
git commit -m "add my first file" # 这里不要乱写,这里写的是提交的细节,对后续维护很重要
Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据
git log
git log

可以打印从近到远的所有提交记录。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

这个是经过哈希计算出来的,很大的数字。

git log --pretty=oneline # 这样可以打印的漂亮一点

学会看懂.git目录里的文件

我们可以看看完成了一系列操作后的目录结构,如下所示。

(base) [yufc@ALiCentos7:~/Src/Bit-Courses/GitDevelopment/gitcode]$ tree .git
.git
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       └── heads
│           └── master
├── objects
│   ├── 0d
│   │   └── f05318450b3455603cd0b0fc2cb4f4c8faa366
│   ├── 86
│   │   └── 5a7036c778b72e201a13e65b37bc35cbd83ade
│   ├── 8d
│   │   └── 9ba68bb8b2dfea545ec559b43f9f08d4d362c0
│   ├── d3
│   │   └── b98d1ce30bb03f3140dee28718bbdf08579543
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── f4
│   │   └── 2df147c60543792b9b56e1118f11409d55e87a
│   ├── info
│   └── pack
└── refs
  ├── heads
  │   └── master
  └── tags
​
18 directories, 24 files

我们在刚才说了,add之后东西会被放到暂存区里面去:/index

暂存区 /index

然后我们可以在目录结构中找到这个index了。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

add之后的内容就会放到index里面去的!

HEAD指针

我们还要看HEAD,刚才说了HEAD是一个指针,指向master。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

就是指向master的

master

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

可以发现,master就是最新的一次提交的commit id 

我们刚才说了,master里面存放的都是对象object的索引,可以把commit id理解成一个对象

object对象

那么如何查看object对象里面的具体内容呢?

首先要把上面的 commit id 分成两部分来看。

前两位,也就是f4表示文件夹的名称,后面表示文件名,如图所示。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

但是现在查看不能直接cat了,要用一个特殊的命令

git cat-file -p [commit id]

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

最新的一次提交的描述信息,就写在这里。

学到这里,我们可以输出一个结论:Git追踪管理的其实就是修改,而不是文件!

修改文件

git status命令

先介绍一个命令,用于查看仓库的状态。

git status

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

我刚才在我的README.md里面新增了一行,然后git statues 告诉我:

Changes not staged for commit :暂存区中没有要修改的内容

修改的内容在工作区的README.md

git diff命令
git diff README.md

即:找出工作区和暂存区中README.md文件的差异。打印格式是Unix常用的diff格式。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据 
修改后

我们git add .一下之后,再git status试一下

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据 

提交看看。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

版本回退

回退操作

重点命令:

git reset [--soft | --mixed | --hard] [HEAD]

直接上例子。

我们的README.md其实是有两个版本的,一个是一开始的版本,一个是添加一行后的版本。

git reset本质是回退版本库中的内容。

--soft --mixed --hard
只回退版本库中的内容,工作区和暂存区不变 版本库+暂存区回退,工作区不变 回退所有区域中的内容

默认使用--mixed选项。

--hard慎用,因为如果我正在工作区进行开发,但是调用了--hard的回退,工作区的内容就直接丢失了。

在操作直线先看看日志。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据 

调用git reset

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

回退之后,在add my first file这一次修改之后的所有修改,都会直接被回退。

如果后续需要撤销修改:也是执行git reset命令。

如果你的bash还没clear,还是能看到刚才的commit id

那直接调用git reset也是可以撤销的。

那如果你屏幕clear了呢?也是可以撤销的。

git reflog # 它可以看到本地每一次的提交命令

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

前面那些短的数字和字母,其实就是 commit id 的一部分。用这一部分也是可以回退的。

回退本质

本质就是一个指针动来动去而已。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

撤销修改

如果我们在工作区在一个版本基础上继续开发,但是越写越觉得自己的代码是垃圾,写不下去了,想直接回到修改前的版本。

首先是有三个场景:

  • 只在工作区中改了

  • add了但没有commit

  • commit了

情况一:仅在工作区中进行了修改
git checkout -- README.md

这个命令可以让文件撤销到上一次add时候的状态。

注意:命令中的--是很重要的,如果不加--,命令是另外一个含义。

情况二:add了但没有commit

先把准备工作做一下,把工作区和暂存区的弄成一致的先。

Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作,Git企业开发控制理论和实操,git,elasticsearch,大数据

利用git reset就行

git reset --hard ... # 这个命令也可以回退到和当前版本库内容一致的版本下,即版本库啥样就回退到啥样
git reset --hard HEAD # 表示回退到当前版本
git reset --hard HEAD^ # 表示回退到上一个版本
git reset --hard HEAD^^ # 表示回退到上两个版本,以此类推
# 当然这里面reset的选项可以自己选
情况三:已经commit

同样可以利用git reset命令。

那么我们知道HEAD是当前版本,HEAD^是上一个版本,所以情况三也是很好解决的。

git reset --hard HEAD^ # 三个区都回退到上个版本

注意:情况三有一个大的前提条件,即:commit之后没有push操作。

至于什么是push操作后续才会讲解。

为什么要有这个前提呢,不是说push了我们的代码就改不了,而是说,在企业中,跑的代码是远程仓库中的代码,不是我本地的代码。

撤销的目的:就是不影响远程仓库的代码。

删除文件

方法一

在工作区rm之后,addcommit就行了。

方法二

使用git提供的命令。

git rm file1

这个命令可以帮我们做两件事:

  • 删除工作区中的file1

  • 删除暂存区中的file1

因此我们再git commit一下就能完成删除了。文章来源地址https://www.toymoban.com/news/detail-674051.html

到了这里,关于Git企业开发控制理论和实操-从入门到深入(二)|Git的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Git企业开发控制理论和实操-从入门到深入(四)|Git的远程操作|Gitee

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Git企业开发控制理论和实操》希望大家多多关注!

    2024年02月11日
    浏览(42)
  • Git企业开发控制理论和实操-从入门到深入(一)|为什么需要Git|Git的安装

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 https://blog.csdn.net/yu_cblog/category_12379430.html 然后就是博主最近最花信息的一个专栏《Git企业开

    2024年02月11日
    浏览(46)
  • Git 分布式版本控制系统基本概念和操作命令

    目录 Git 基本概念 功能特点 工作流程 操作命令 新建代码库 配置 增删文件 代码提交 分支 标签 查看信息 远程同步 撤销 其他 小结 Git 是一个开源的分布式版本控制系统,用于跟踪文件的变更历史。它最初由 Linux Torvalds 设计,用于 Linux 内核的开发,但由于其强大的功能和灵

    2024年03月27日
    浏览(61)
  • Git 与 Maven:企业级版本管理与版本控制规范设计

    当今,许多开发人员熟悉 GitFlow 工作流程,但往往忽略了 GitFlow 如何与 Maven 版本控制结合,尤其是在管理 snapshot 和 release 版本时的最佳实践。本文旨在整合 GitFlow 工作流程与 Maven 版本管理,提出一个统一的企业级规范,以供开发人员参考。 GitFlow 是一种流行的分支管理模型

    2024年02月04日
    浏览(48)
  • 【Xiao.Lei】- Git详解:深入理解分布式版本控制

    在现代软件开发中,版本控制是一个至关重要的方面。Git,作为最流行的分布式版本控制系统之一,为开发者提供了高效、灵活的协作和版本管理工具。本文将深入探讨Git的各个方面,包括基础概念、工作流程、分支管理、团队协作等,并结合详细的命令说明,旨在帮助读者

    2024年01月21日
    浏览(64)
  • 【Git企业开发】第一节.Git 初识

    作者简介:大家好,我是未央; 博客首页: 未央.303 系列专栏: 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!!! 文章目录 前言 课程目标 初始Git 一、Git 安装 二、Git 基本操作 2.1 创建Git本地仓库 2.2 配置Git 2.3 查看.git文件 三、认识工作区、暂存

    2024年02月08日
    浏览(44)
  • 【深入解析git和gdb:版本控制与调试利器的终极指南】

    1. 掌握简单gdb使用于调试 2. 学习 git 命令行的简单操作, 能够将代码上传到 Github 上 1.1.背景 程序的发布方式有两种, debug模式 和 release模式 release 模式不可被调试, debug 模式可被调试 Linux gcc/g++出来的二进制程序,默认是 release 模式 要使用gdb调试,必须在源代码生成二进制

    2024年02月05日
    浏览(34)
  • Git企业开发级讲解(一)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 不知道你⼯作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防⽌⽂档丢失,更改 失误,失误后能恢复到原来的版本,不得

    2024年02月05日
    浏览(32)
  • Git企业开发级讲解(五)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 假如我们现在正在 dev2 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有 bug,需要解决。在Git中,每个 bug 都可以通过⼀个新的临时分

    2024年02月05日
    浏览(26)
  • Git企业开发级讲解(三)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 之前我们也提到过,Git 能够管理⽂件的历史版本,这也是版本控制器重要的能⼒。如果有⼀天你发现之前前的⼯作做的出现了很⼤的问题,需

    2024年02月05日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包