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

一文搞懂GIT

文章目录

  • 1. GiT概述
    • 1.1 GIT概述
    • 1.2 GIT安装
  • 2. GIT组成
  • 3. GIT基本命令
    • 3.1 基本命令
    • 3.2 分支操作
    • 3.3 远程操作
    • 3.4 标签操作
    • 3.5 其他命令

1. GiT概述

1.1 GIT概述

Git 是一个分布式版本控制系统,被广泛应用于软件开发中。

Git 具有众多优点,比如:

  1. 分布式特性:开发人员可以在本地拥有完整的代码库历史,即使离线也能进行大部分操作。
  2. 强大的分支管理:创建、合并和删除分支都非常便捷,且不会影响其他分支的工作。
  3. 高效的协作:多个开发者可以方便地共享和合并彼此的代码更改。

例如,在一个大型团队开发项目中,不同的开发者可以基于 Git 创建自己的特性分支进行开发工作,完成后将分支合并到主分支。而且,如果在开发过程中出现错误,通过 Git 的版本回退功能,可以轻松回到之前的正确版本。

Git 的常用命令包括
git init 用于初始化一个新的代码库
git clone 用于克隆远程代码库
git add用于将更改添加到暂存区
git commit 用于提交更改等等。

1.2 GIT安装

Windows 系统:
访问 Git 官方网站(https://git-scm.com/)。
点击“Download for Windows”下载适合 Windows 的安装程序。
运行安装程序,按照默认设置进行安装,或者根据您的需求自定义安装路径等选项。

Mac 系统:
可以通过两种常见方式安装:
从 Git 官方网站下载安装包进行安装。
使用 Homebrew 命令行工具进行安装,在终端中输入 brew install git 。

Linux 系统(基于 Debian 或 Ubuntu):
在终端中输入以下命令:

sudo apt-get update
sudo apt-get install git

安装完成后,您可以在终端中输入 git --version 来验证是否安装成功,并查看安装的 Git 版本。

2. GIT组成

Git 是一个分布式版本控制系统,具有复杂但灵活的组成部分。理解 Git 的组成部分有助于你更好地利用其功能。Git 主要由以下几个核心组成部分构成:

工作区(Working Directory) 这是您直接操作和编辑文件的地方,就是您项目所在的本地目录。

**暂存区(Staging Area,也称为 Index):**工作区中的修改可以通过 git add 命令添加到暂存区,文件的当前状态会被记录到暂存区。当你执行 git commit 时,Git 会将暂存区中的文件快照作为一个新的提交保存到本地仓库。

本地仓库(Local Repository)
本地仓库是你在本地计算机上保存 Git 项目历史记录的地方。它包含了项目的所有版本历史。每次你执行 git commit 时,提交记录会被保存到本地仓库。
本地仓库主要由两个部分组成:

.git 目录:这是 Git 存储项目历史和元数据的地方。它包含了多个重要的子目录和文件:
objects:存储所有的对象(如提交、树、blob 等)。这些对象以 SHA-1 哈希值为名称进行存储。
refs:存储指向提交对象的引用,如分支和标签。常见的子目录包括 heads(本地分支)和 tags(标签)。
HEAD:指向当前检出分支的指针。它记录了当前分支或提交的位置。 config:项目的配置文件,存储有关 Git 仓库的设置,如远程仓库
URL 和分支设置。 description:存储仓库的简短描述(通常用于 GitWeb 等工具)。

远程仓库(Remote Repository):通常位于网络上的服务器上,如 GitHub、GitLab 等。可以通过 git push 将本地的提交推送到远程仓库,实现与其他开发者的代码共享和协作。

提交 (Commit)
提交是 Git 中的核心概念之一。每次你执行 git commit,Git 会将暂存区中的文件快照保存为一个新的提交。每个提交都有一个唯一的 SHA-1 哈希值,用来标识这个提交。提交包含以下信息:

树对象:代表项目的文件和目录结构。
父提交:指向前一个提交的引用(合并提交有多个父提交)。
作者信息:提交者的姓名和邮箱。
提交信息:对提交所做更改的描述。

分支 (Branch)
分支是 Git 中用于并行开发的机制。分支允许你在不影响主线开发的情况下进行实验和开发。常见的分支操作包括:

创建分支:git branch
切换分支:git checkout
合并分支:git merge

标签 (Tag)
标签是 Git 中用于标记特定提交的机制,通常用于标记发布版本或重要的里程碑。标签是一个对提交的引用,标签有两个类型:

轻量标签:简单的指针,类似于分支但不具有版本历史。
注释标签:包含额外的元数据,如标签名称、标签人和标签信息。

合并 (Merge) 和变基 (Rebase)
合并:将一个分支的更改集成到当前分支,通常使用 git merge 命令。
变基:将一个分支的更改重新应用到另一分支的顶部,通常使用 git rebase 命令。变基可以保持提交历史线性,但在处理公共分支时要小心。

3. GIT基本命令

3.1 基本命令

git init: 初始化一个新的 Git 仓库。
git clone 克隆一个远程仓库到本地。
git status 显示当前工作目录和暂存区的状态。
git add 将文件添加到暂存区。
git commit -m “message” 提交暂存区的文件到本地仓库
git log 查看提交历史。
git diff 查看文件修改的差异。
git reset 从暂存区移除文件。

3.2 分支操作

git branch 列出、创建或删除分支。

git branch        # 列出本地分支
git branch <name> # 创建新分支
git branch -d <name> # 删除分支

git checkout 切换到指定的分支。
git checkout -b 创建并切换到一个新分支。
git merge 将指定的分支合并到当前分支。

3.3 远程操作

git remote -v 查看远程仓库信息。

git remote add 添加一个新的远程仓库。

git fetch 从远程仓库下载新数据,但不合并。

git pull 从远程仓库拉取数据并合并到当前分支

git push 将本地分支推送到远程仓库。

git push --set-upstream 设置上游分支并推送。

3.4 标签操作

git tag 列出所有标签。

git tag 创建一个新的标签。

git tag -d 删除一个标签。

git push origin 将标签推送到远程仓库。

3.5 其他命令

git stash 暂时保存未提交的更改。
git stash apply 恢复上次存储的更改。
git rebase 将当前分支的提交变基到指定分支上。
git cherry-pick 从一个分支中选择特定的提交并将其应用到当前分支。
git revert 创建一个新的提交以撤销指定的提交。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 本地部署持续集成工具Jenkins并配置公网地址实现远程自动化构建
  • 【Android】数据存储之SQLite数据库知识总结
  • C语言数据在内存中的存储超详解
  • nacos 2.3.2 若依使用mysql
  • 智慧环卫可视化:科技赋能城市清洁管理
  • Java--二,十,十六进制间的相互转换
  • 【初阶数据结构篇】归并排序和计数排序(总结篇)
  • Python面试题:结合Python技术,如何使用Scrapy构建爬虫框架
  • [极客大挑战 2019]Secret File-web
  • 校园点餐系统
  • java算法递归算法练习-数组之和
  • 快速部署私有化大模型 毕昇(使用docker-compose方式)
  • Opencv threshold函数、adaptiveThreshold函数详解和示例
  • 【力扣】SQL题库练习5
  • actual combat 38 ——vue
  • 0基础学习移动端适配
  • avalon2.2的VM生成过程
  • Javascript 原型链
  • JavaScript服务器推送技术之 WebSocket
  • JavaWeb(学习笔记二)
  • Java多线程(4):使用线程池执行定时任务
  • JS实现简单的MVC模式开发小游戏
  • Leetcode 27 Remove Element
  • MobX
  • nginx 负载服务器优化
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • tweak 支持第三方库
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 解析 Webpack中import、require、按需加载的执行过程
  • 聊聊flink的TableFactory
  • 前端面试之闭包
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 算法-图和图算法
  • 微服务入门【系列视频课程】
  • 我的业余项目总结
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • raise 与 raise ... from 的区别
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • # Redis 入门到精通(一)数据类型(4)
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (LeetCode) T14. Longest Common Prefix
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (poj1.3.2)1791(构造法模拟)
  • (python)数据结构---字典
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (层次遍历)104. 二叉树的最大深度
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二)斐波那契Fabonacci函数
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (推荐)叮当——中文语音对话机器人