Git的命令使用与IDEA内置git图形化的使用

news/2024/8/26 14:43:33/ 标签: git

Git 简介

Git 是分布式版本控制系统,它可以帮助开发人员跟踪和管理代码的更改。Git 可以记录代码的历史记录,并允许您在不同版本之间切换。

通过历史记录可以查看:

  • 进行了哪些更改?
  • 谁进行了更改?
  • 何时进行了更改?
  • 为什么需要更改?

  1. 仓库

仓库是用于存储代码的地方,其中包含所有的文件和历史记录。仓库可以被克隆到本地,这样您就可以在本地进行修改,并在需要时提交到远程仓库。

托管Git远程仓库:

  1. 提交(Commit)
    提交是 Git 中的一个操作,表示将更改保存到仓库中。每次提交都会创建一个新的版本,您可以在任何时候查看之前的提交。
  2. 分支(Branch)
    分支是在仓库中创建的并行开发线。不同的分支可以用于不同的功能开发或修复错误。您可以在分支上工作,而不影响主分支。完成工作后,可以将分支合并回主分支。
  3. 合并(Merge)
    合并是将两个或多个分支的更改合并到一起的操作。这通常发生在一个分支完成其任务,需要将其更改整合到主分支或其他分支时。
  4. 拉取请求(Pull Request)
    拉取请求是在使用 Git 进行团队协作时常用的步骤。它表示一个开发者请求将他们的分支合并到主分支或其他分支。在合并之前,团队成员可以检查更改并提供反馈。
  5. 克隆(Clone)
    克隆是将远程仓库复制到本地机器的过程。这样,您就可以在本地对仓库进行操作,而不需要连接到远程仓库。
  6. 推送(Push)
    推送是将本地提交上传到远程仓库的操作。这使得其他人可以拉取您的更改。
  7. 拉取(Pull)
    拉取是从远程仓库获取更新并合并到本地仓库的操作。它通常结合了 Fetch(获取更新)和 Merge(合并更新)两个步骤。
    Git 是一个功能强大的工具,它提供了一套完整的版本控制策略,可以帮助团队协作开发代码,并管理软件项目的整个生命周期。

Git 相关操作

  • Git 基本操作:
    git status: 查看本地仓库的状态,包括哪些文件被修改、暂存或未跟踪。
    git add: 将修改的文件添加到暂存区(staging area),准备提交。
    git commit: 提交暂存区中的修改到本地仓库,生成新的提交记录。
    git push: 将本地仓库的提交推送到远程仓库,与其他团队成员共享更改。
    git pull: 从远程仓库拉取最新的更改,并合并到本地仓库。
    git clone: 克隆一个远程仓库到本地,创建一个新的本地仓库副本。
  • Git 分支管理:
    git branch: 显示所有本地分支。
    git checkout: 切换到另一个分支。
    git branch [分支名]: 创建一个新的分支。
    git merge: 合并一个分支到当前分支。
  • Git 远程仓库:
    git remote: 显示所有远程仓库。
    git add remote [仓库名] [仓库地址]: 添加一个新的远程仓库。
    git push [仓库名] [分支名]: 将本地分支推送到远程仓库。
    git pull [仓库名] [分支名]: 从远程仓库拉取并合并到本地分支。
  • Git 撤销操作:
    git reset: 撤销已经提交的更改,有不同的模式可以选择,如 soft, mixed, hard(与上一次commit保持一致)。
    git revert: 创建一个新的提交来撤销之前的更改,而不影响历史记录。
  • Git 标签:
    git tag: 显示所有标签。
    git tag [标签名]: 创建一个标签。
    git push [仓库名] [标签名]: 将标签推送到远程仓库。
    git push [仓库名] --tags: 将所有标签推送到远程仓库。
  • Git 日志:
    git log: 显示提交历史记录。
    git log --pretty=oneline: 以简洁的格式显示提交历史。
    git log [分支名]: 显示特定分支的提交历史
  • Git 删除:
    git push [仓库名] [:分支名]: 删除远程分支或标记。

IDEA Git操作

管理分支

合并分支:

合并分支

  1. Merge(合并)

分支的提交产生一个新的记录,合并到另一个分支。

在这里插入图片描述

  • 优点:
    • 更加安全,不改变分支线
    • 保留分支历史,每个分支的历史将被保留
    • 使用简单
  • 缺点:
    • 分支线混乱,在合并后都会产生新节点
    • 关系不清晰,分不清是合并还是原始的节点
  1. Rebase (变基)

重新拉取一个Release分支,把这个分支提交记录放在最新,再通过merge合并Release分支
在这里插入图片描述

  • 优点:
    • 干净的提交历史
    • 关系清晰
  • 缺点:
    • 改变提交记录,可能会改变提交顺序

不要在公共分支执行Rebase


在不同分支合并提交代码:
  1. cherry-pick(优选)

将一个分支中的提交合并到另一个分支,无冲突直接合并,有冲突解决冲突再合并。

  • 切换到合并的分支
  • 使用 git cherry-pick [提交记录号…]

优选

  1. patch(补丁)

将提交形成补丁,在其他分支应用这个补丁。

  • 生成补丁
git format-patch -1 -o /Users/apple

format-patch: 补丁命令
-1 : 最近提交,可以定义最近的几次提交(3为最近3次)也可以使用提交记录号
-o /Users/apple: 补丁文件路径

  • 应用补丁
// 检查补丁
git apply --stat 补丁路径
// 检验是否能打上补丁
git apply --check 
// 打补丁
git am 补丁路径

可多选提交,然后创建补丁
补丁
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


中途切换分支:
  1. stash (暂存)

在切换分支前,将当前变更暂存到栈中,并添加暂存注释,查看暂存区记录,恢复暂存记录。

  • 变更暂存到栈中
git stash
  • 添加暂存注释
git stash save '注释'
  • 查看暂存记录
git stash list
  • 恢复暂存记录
// 恢复最近暂存记录 ,会在暂存区删除
git stash pop
// 恢复最近暂存记录 ,不会在暂存区删除
git stasjh apply stash@{编号}
// 只移除暂存信息,不做恢复
git stasjh drop stash@{编号}
// 查看与本地代码区别
git stash show

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给开源项目提交代码
  1. Fork

使用Fork将开源项目代码快照存在自己的远程仓库,然后拉取代码,新建分支,修改代码,提交推送
在这里插入图片描述

  1. PR

合到开源项目中

在这里插入图片描述
在这里插入图片描述


回退代码
  1. Revert(还原)

撤销某些提交,并用新提交覆盖。(逆向生成)

在这里插入图片描述
在这里插入图片描述
对刚刚还原的提交记录进行还原,就可以将之前还原的重新提交了
在这里插入图片描述

  1. Reset(回退)

在这里插入图片描述
在这里插入图片描述



http://www.ppmy.cn/news/1475737.html

相关文章

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

深入理解I/O模型

目录 一、I/O 模型简介 二、I/O 模型 2.1 同步阻塞 I/O 2.2 同步非阻塞I/O 2.3 I/O多路复用 2.4 异步I/O 2.5 信号驱动 I/O 三、总结 一、I/O 模型简介 所谓的 I/O 就是计算机内存与外部设备之间拷贝数据数据的过程。有 5 中 I/O 模型,分别是同步阻塞 I/O、同步…

细说MCU用定时器控制ADC采样频率的实现方法

目录 一、工程依赖的硬件及背景 二、设计目的 三、 建立工程 1.选择时钟源和Debug模式 2.配置系统时钟和ADC时钟 3.配置串口 4.配置ADC 5.设置TIM3 6.设置TIM4 7.配置中断 8.GPIO 四、代码修改 1.重新定义ADC回调函数 2.在主程序中编写数据发送代码 3.使能ADC和…

云端日历同步大师:iCloud让工作与生活井井有条

云端日历同步大师:iCloud让工作与生活井井有条 在快节奏的现代生活中,无论是工作还是个人生活,我们都需要一个可靠的日历应用来帮助我们管理日常事务和重要事件。iCloud作为苹果公司提供的云服务,其日历应用(Apple Ca…

PyMuPDF 包读取pdf文档时,span里的flags属性代表什么

在 PyMuPDF(也称为 fitz)库中,flags 属性表示文本的格式化信息。flags 是一个整数,它包含了不同位(bits)的标志,每个位代表文本的一种属性。这些标志位可以组合在一起表示复杂的文本格式。 具体…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(三)-机上无线电接入节点无人机

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

记一次使用vue连接rabbitMq

连接rabbitMq需要使用stompjsnpm i stompjs 下下面是连接代码 import Stomp from stompjsonConnected(frame) {// 绑定交换机exchange_pushmsg是交换机的名字rk_pushmsg是绑定的路由keyvar exchange this.rabbitMqexchange || queue.device.zzzz// 创建随机队列用上面的路由k…

神经网络替代密度泛函理论!清华研究组发布通用材料模型 DeepH,实现超精准预测

在材料设计中,了解其电子结构与性质是预测材料性能、发现新材料、优化材料性能的关键。过去,业界广泛使用密度泛函理论 (DFT) 来研究材料电子结构和性质,其实质是将电子密度作为分子(原子)基态中所有信息的载体&#x…

【Python】sklearn教程

1. sklearn库介绍 sklearn是 Python 中一个非常重要的机器学习库,全称为scikit-learn。它是基于Python语言的机器学习工具,提供了一系列简单高效的机器学习算法。sklearn库通常与NumPy和SciPy库一起使用,用于数据预处理、特征选择、模型训练…

无人机之遥控器分类篇

一、传统遥控器 传统无人机遥控器一般包括开关键、遥控天线等基础装置。但是会随着无人机具体的应用和功能而开发不同的按键。它的信号稳定性远超对比其他遥控,而且遥控距离也更远(一般遥控范围在100米或以上)传统遥控器对于初学者来说比较难…

/EtherCATInfo/Descriptions/Devices/Device/SubDevice/@Hideable

SubDevice/Hideable 属性 /EtherCATInfo/Descriptions/Devices/Device/SubDevice/Hideable 出现次数:可选 (0…1)数据类型:布尔值 该属性仅应在列出所有子设备的主设备的 ESI 文件中使用。该属性表示配置工具是否可以隐藏相应的子设备。只有不需要配置…

PXE、Kickstart和cobbler

一.系统装机 1.1 三种引导方式 启动操作系统 1.硬盘 2.光驱(u盘) 3.网络启动 pxe 1.2 系统安装过程 1.加载boot loader: Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设 备、建立内存空间的映射图,从而将系统的软硬…

多旋翼无人机挂载多功能抛投器技术详解

多旋翼无人机,作为一种具有高效、灵活、稳定等特性的无人驾驶飞行器,在现代社会的多个领域得到了广泛应用。其中,挂载多功能抛投器技术,使得无人机在物资投送、救援等任务中发挥出更加重要的作用。以下将详细介绍多旋翼无人机挂载…

搜索引擎算法工程师,在query理解方面,都有哪些方面的工作

一、什么是query理解? 通俗来讲,就是query整形。又可以理解为是一个转接头,把用户送来过来的奇奇怪怪的query(或者说是在搜索引擎看来是奇奇怪怪的query)转换为搜索引擎最想看到的query的。 在LLM当前能力的帮助下&a…

STM32学习历程(day6)

EXTI外部中断使用教程 首先先看下EXTI的框图 看这个框图就能知道要先初始化GPIO外设 那么和前面一样 1、先RCC使能时钟 2、配置GPIO 选择端口为输入模式, 3、配置AFIO,选择我们用的GPIO连接到后面的EXTI 4、配置EXTI,选择边沿触发方式…

《系统架构设计师教程(第2版)》第11章-未来信息综合技术-06-云计算(Cloud Computing) 技术概述

文章目录 1. 相关概念2. 云计算的服务方式2.1 软件即服务 (SaaS)2.2 平台即服务 (PaaS)2.3 基础设施即服务 (IaaS)2.4 三种服务方式的分析2.4.1 在灵活性2.4.2 方便性方 3. 云计算的部署模式3.1 公有云3.2 社区云3.3 私有云3.4 混合云 4. 云计算的发展历程4.1 虚拟化技术4.2 分…

大数据如何推动工业数字化发展

在全球工业4.0浪潮中,大数据技术作为核心驱动力,正深刻改变着传统工业的面貌。通过数据的采集、分析和应用,工业企业能够实现生产效率的提升、成本的降低以及创新能力的增强。本文将从大数据在工业数字化中的应用场景、技术实现和实际案例等方…

数据库系统概论:初识数据库

数据库(Database)作为计算机系统中不可或缺的重要组成部分,扮演着存储、管理和访问数据的核心角色。它们被设计用于高效地存储和管理数据,使用户能够快速地查找、更新和分析信息。数据库系统是现代信息技术的核心组成部分&#xf…

keil将“32”单片机中的axf文件转换为bin文件

需要注意的是keil自带的fromelf.exe只是将axf文件转换为bin文件 在编译stm32单片机使用才能生成axf文件,在编译51单片机时会输出hex文件,没有输出axf文件 使用方法 参考,参考1,参考2 简单来说是设置输出hex,然后修改…

【JavaEE】网络原理——网络层+数据链路层

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 🤡🤡🤡上一篇文章:【JavaEE】网络原理—…