当前位置: 首页 > news >正文

【Git】Git 简介及基本操作

目录

  • 一、Git 简介
    • 1.1 LInux下安装Git
      • 1.1.1 centos下的命令
      • 1.1.2 ubuntu下的命令
  • 二、基本操作
    • 2.1 创建本地仓库
    • 2.2 配置本地仓库
    • 2.3 认识⼯作区、暂存区、版本库
    • 2.4 添加文件
    • 2.5 查看 .git
    • 2.6 修改文件
    • 2.7 版本回退
    • 2.8 撤销修改
      • 2.8.1 对于⼯作区的代码,还没有 add
      • 2.8.2 已经 add ,但没有 commit
      • 2.8.3 已经 commit
      • 2.9 删除文件

一、Git 简介

在工作和学习中,我们通常会遇到同一个报告、作业反复修改的时候,如果每一次修改后的版本都是有意义的,那么我们就要将每一个版本保存下来。但如果一旦修改过多,你还会记得这些版本各⾃都是修改了什么吗?

为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。目前主流的版本控制器就是Git。

版本控制器:就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。

注意事项:

  • Git可以管理所有格式的文件;
  • 例如文本文件,你在文件中修改了什么,Git是可以记录下来的。
  • 但是二进制文件,你在文件修改了什么,Git是不知道的,只能记录每次修改导致文件大小的变化。

1.1 LInux下安装Git

1.1.1 centos下的命令

  1. 看看系统有没有安装Git:git --version。没有结果:-bash: git: command not found
  2. 安装 Git: sudo yum -y install git

1.1.2 ubuntu下的命令

  1. 看看系统有没有安装Git:git --version。没有结果:Command 'git' not found, but can be installed with:
  2. 安装 Git: sudo apt-get install git -y

二、基本操作

2.1 创建本地仓库

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

  1. 创建一个目录: mkdir gitcode,进入目录:cd gitcode
  2. 创建本地仓库:git init

2.2 配置本地仓库

当安装 Git 后⾸先要做的事情是设置你的 ⽤⼾名称 和 e-mail 地址。

git config [--global] user.name "Your Name" 
git config [--global] user.email "email@example.com" 
# 把 Your Name 改成你的昵称
# 把 email@example.com 改成邮箱的格式,只要格式正确即可。
# 加上 --global 代表全局 会将本地的所有仓库都配置,删除时也要加上 -- global 才能删除。

git config -l查看配置项:

删除对应的配置命令为:

git config [--global] --unset user.name

git config [--global] --unset user.email

2.3 认识⼯作区、暂存区、版本库

  • 版本库(仓库):就是指上面创建的 .git 文件
  • 工作区:我们在上面是将 .git 创建在 gitcode 目录下的,由于我们是不能手动去对 .git 文件进行任何修改的,修改后可能导致本地仓库报废,我们的文件都是放入 gitcode 目录下的。所以我们将gitcode 目录下的区域(除 .git)称为 工作区。
  • 暂存区 / 索引:英⽂叫 stage 或 index。⼀般存放在 .git ⽬录下的 index ⽂件(.git/index)中,我们把暂存区有时也叫作索引(index)。
    关系图

2.4 添加文件

先创建一个文件到工作区: touch ReadMe

  • 添加到暂存区:
    • git add .将当前工作区的文件全部添加
    • git add [file1] [file2] ... 将文件[file1] [file2] …添加
  • 提交到仓库
    • git commit -m "描述" 提交暂存区全部内容到本地仓库中
    • git commit [file1] [file2] ... -m "描述"提交暂存区 [file1] [file2] …到本地仓库中

git log 可以打印从近到远的所有提交记录:

2.5 查看 .git

  1. index 就是我们的暂存区,add 后的内容都是添加到这⾥的。
  2. HEAD 就是我们的默认指向 master 分⽀的指针.
  3. ⽽默认的 master 分⽀,其实就是: .git/refs/heads/master,存放的是最新一次提交的commit id

    打印的东西就是最新的commit id
  4. objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 “.git/objects” ⽬录下,
    查找 object 时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。使⽤git cat-file [option] [commit id] 命令来查看版本库对象的内容。

2.6 修改文件

我们Git本质上是 跟踪并管理 修改的,而不是文件本身。

查看当前仓库的状态:git status,⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改。

查看工作区域仓库文件不同:git diff [file],⽤来显⽰暂存区和⼯作区⽂件的差异。
也可以使⽤ git diff HEAD -- [file] 命令来查看版本库和⼯作区⽂件的区别。

2.7 版本回退

执⾏ git reset 命令⽤于回退版本。
回退”本质是要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:
语法格式为: git reset [--soft | --mixed | --hard] [HEAD]

  • --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。

  • --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。

  • --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。

HEAD 说明:

  • 可直接写成 commit id,表⽰指定退回的版本
    • HEAD 表⽰当前版本
    • HEAD^ 上⼀个版本
    • HEAD^^ 上上⼀个版本。 以此类推…
  • 也可以使⽤ 〜数字表⽰:
    • HEAD~0表⽰当前版本
    • HEAD~1上⼀个版本
    • HEAD^2 上上⼀个版本。以此类推…

修改:

想吃后悔药了:

  • 当终端有原来的commit id的时候直接复制执行git reset命令即可:
  • 没有,就先使用git reflog命令拿到 commit id,再执行

2.8 撤销修改

我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在是垃圾,想恢复到上⼀个版本。

2.8.1 对于⼯作区的代码,还没有 add

创造条件:
-

不建议操作:

  • 直接在源文件上修改,但是当我们开发过多的时候,不会知道哪些是新添加的。
  • 使用git diff命令,代码太多,修改会很困难。

建议操作:

  • 使⽤ git checkout -- [file] 命令让⼯作区的⽂件回到最近⼀次 add 或 commit 时的状态。-- 很重要,切记不要省略。

2.8.2 已经 add ,但没有 commit

创造条件:

操作:

  • git reset 回退命令,该命令如果使⽤--mixed 参数,可以将暂存区的内容退回为指定的版本内容,但⼯作区⽂件保持不变,就回到第一种情况了。
  • git reset 回退命令,该命令如果使⽤--hard 参数,工作区文件一起修改。

2.8.3 已经 commit

我们可以 git reset --hard HEAD^ 回退到上⼀个版本,有条件的,就是你还没有把⾃⼰的本地版本库推送到远程。

2.9 删除文件

  1. 先在工作区删除文件,再 add 和commit
  2. 使用git rm [filename] 删除工作区和暂存区的文件,在commit一下就行。
http://www.dtcms.com/a/406474.html

相关文章:

  • 网站模版怎么做wordpress 图片 二级域名
  • 点击EDGE浏览器下载的PDF文件总在EDGE中打开
  • 用MATLAB画一只可爱的小熊
  • Matlab通过GUI实现点云的半径滤波(Radius Outlier Removal)
  • 基于MATLAB的8QAM调制解调仿真与BER性能分析
  • 2025年AI证书报考指南:CAIP/华为/谷歌认证
  • 合肥营销型网站建设开发河南城源建设工程有限公司网站
  • 若依 springboot websocket
  • 开源 C# 快速开发(三)复杂控件
  • Visual Studio使用C++配置OpenCV环境,同时添加模板以4.12为例
  • JUnit 4 + Spring Boot 测试依赖
  • HTML应用指南:利用POST请求获取全国索尼体验型零售店位置信息
  • html网站源码 html网页模板下载
  • 做网站接广告了解基本的php wordpress
  • 房地产手机网站模板网站推广公司ihanshi
  • 推荐一个网站
  • 前端可视化第一章:PixiJS入门指南
  • 时间序列分析新视角:单变量预训练 多变量微调
  • coqui-ai/TTS 安装
  • linux命令dd单刷镜像文件
  • 奔驰押注中国AI,国产大模型上车
  • 笔记(C++篇)—— Day 11
  • Cursor推出全新文档中心:甚至提供详细的中文版本
  • 选择合肥网站建设html的基本结构
  • Linux文件系统调用详解:底层操作到高级应用
  • 基于51单片机的供电保护系统
  • 网站建设技术交流制作公司网页价钱
  • 前端Bug实录:为什么表格筛选条件在刷新时神秘消失?
  • 关于做视频网站的一些代码网站备案号是什么样子
  • 专业定制网站开发上海手机网站建设价格