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

Git学习——细节补充

Git学习——细节补充

    • 1. git diff
    • 2. git log
    • 3. git reset
    • 4. git reflog
    • 5. 提交撤销
      • 5.1 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时
      • 5.2 当提交到了stage区后,想要退回
    • 6. git remote
    • 7. git pull origin master --no-rebase
    • 8. 分支管理
    • 9. git rebase
    • 10. git cherry-pick(选择性提交)
    • 总结

在这里插入图片描述
1

1. git diff

如果忘记了修改了什么,可以使用此命令进行变更详情查看。

# 1. 查看当前目录指定文件与(暂存区)目录该文件之间的区别
git diff hwy.txt	
# 2. 查看当前目录,所有文件变更情况
git diff
# 3. 查看当前目录,与(最新的提交`HEAD`)之间的差异
git diff HEAD -- cxk.txt

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2. git log

git log		# 详细的查看历史的所有commit版本

在这里插入图片描述


3. git reset

# 回退历史版本
git reset --hard HEAD^		# 回退到上一个commit版本
git reset --hard HEAD~5		# 向前回退5个commit版本
git reset --hard st34f2r	# 变更到指定某一个版本

在这里插入图片描述


4. git reflog

由于后退到某个历史版本后,git log就不会输出该版本之后的提交id,可以通过查看git命令执行日志,找到对应的提交ID,在进行commit版本变更。

git reflog

在这里插入图片描述


5. 提交撤销

5.1 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

git checkout -- cxk.txt			# 1. 撤回指定文件工作区中的修改

在这里插入图片描述


5.2 当提交到了stage区后,想要退回

git reset HEAD cxk.txt

在这里插入图片描述

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

6. git remote

# 1. 新建与远程仓库的链接
git remote add origin git@github.com:username/project_name.git# 2. 删除与远程仓库的链接
git remote -v			# 查看有哪些远程仓库链接
git remote rm xxxxxx	# rm删除与远程仓库的链接


7. git pull origin master --no-rebase

# 当遇到本地仓库有自己独有的文件,远程仓库有独有的文件,合并两个仓库
# 1. 重新生成一个提交,用于合并本地分支和远程仓库分支
git pull origin master --no-rebase# 2. 采用变基(rebase)策略,将本地分支的所有提交,在远程分支最新提交上”重新播放“,从而达到一个线性的提交历史
git pull origin master --rebase

在这里插入图片描述


8. 分支管理

git checkout -b dev		# 快速创建一个dev分支,并切换到该分支# 等价于如下
git branch dev
git checkout dev		

在这里插入图片描述

# 合并dev到当前所在分支
git merge dev

在这里插入图片描述

  • 需要切换到指定分支,然后再将dev分支合并到指定分支.
  • 创建分支,实际上只是创建了一个指向当前commit的一个指针,上述merge将会采用Fast-forward策略,快速合并;这是因为这种合并只是将master指针指向了dev当前commit所在的版本位置。
  • 随后直接删除dev即可

9. git rebase

当本地分支需要与远程分支同步,但是远程分支已经有了新的版本,因此无法直接git push.

此时,需要先git pull origin master,将远程的分支与本地进行合并,但是这样一来,就会有很多分叉的历史提交线.

为了保证美观,因此可以考虑使用变基(rebase)

这里我演示一下rebase的工作原理

任务:

  • 新建并切换到 bugFix 分支
  • 提交一次
  • 切换回 main 分支再提交一次
  • 再次切换到 bugFix 分支,rebase 到 main 上
# 1. 创建bugFix分支,并切换过去
git checkout -b bugFix

在这里插入图片描述

2. 在bugFix分支提交一次,随后切回到main分支(这里就不打命令了)

在这里插入图片描述

3. 在main分支commit一次(这里就不打命令了)
git checkout bugFix		# 切到bugFix分支

在这里插入图片描述

# 4. 执行rebase合并(变基合并)
git rebase main

在这里插入图片描述

rebase工作原理可以解释为如下:

  • c1->c2的变更操作,应用到main分支的最新提交位置,从而达到合并的效果。
  • 因此,在main分支的最新提交处c3,新增了一个提交操作,从而到达了c2’;c3->c2'的文件变更情况与c1->c2一样

为了更详细的展示,这里举了一个多次commit的例子。

如下图,可以看到:

  • bugFix的提交过程为C1->C2->C3
  • main的提交过程为C1->C4->C5

执行rebase命令后,则会将C1->C2->C3的版本变更操作,执行到main分支的最新提交C5上;

从而得到一个使得历史提交版本线像是在同一条线上进行的,更加美观。
在这里插入图片描述

PS: merge和rebase的用户不同之处

  • rebase:如果需要将A分支合并到B分支,则需要先切换到A分支,然后执行git rebase B,有种基于B,把当前分支提交合并进去的意思;
  • merge:如果需要将A分支合并到B分支,那么直接切到B分支作为骨干,执行git merge A,有种将A拉过来合并的意思。

10. git cherry-pick(选择性提交)

# 顾名思义,筛选,挑拣。
# 意思是指定一些commit,合并到当前所在分支。
git cherry-pick c3 c4 (可接多个提交版本)

举个例子,下图共有4个分支,当前处于main分支,现在想要吧c3,c4,c7三个提交,合并到main分支上。

在这里插入图片描述

神奇的事情来了,通过执行如下命令,完成筛选合并。

可以发现,main分支从当前位置c1开始,依次提交c3 c4 c7

git cherry-pick c3 c4 c7

在这里插入图片描述

总结

最后,个人学习过程中用到的网站如下:

  • 基础概念:廖雪峰-git教程
  • 模拟实战:Learn Git Branching
  • 本地模拟:在本地模拟一个git远程仓库

2023.09.01


  1. 工作区和暂存区 ↩︎

相关文章:

Git学习——细节补充

Git学习——细节补充 1. git diff2. git log3. git reset4. git reflog5. 提交撤销5.1 当你改乱了工作区某个文件的内容&#xff0c;想直接丢弃工作区的修改时5.2 当提交到了stage区后&#xff0c;想要退回 6. git remote7. git pull origin master --no-rebase8. 分支管理9. g…...

【设计模式】Head First 设计模式——装饰者模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点&#xff0c;然后分离它们&#xff0c;从而管理变化。将变化像小兔子一样关到笼子里&#xff0c;让它在笼子里随便跳&#xff0c;而不至于跳出来把你整个房间给污染掉。 设计思想 动态地将责任附加到对象上&#xff0c;若要扩…...

layui实现数据列表的复选框回显

layui版本2.8以上 实现效果如图&#xff1a; <input type"hidden" name"id" id"id" value"{:g_val( id,0)}"> <div id"tableDiv"><table class"layui-hide" id"table_list" lay-filter…...

关于使用RT-Thread系统读取stm32的adc无法连续转换的问题解决

关于使用RT-Thread系统读取stm32的adc无法连续转换的问题解决 今天发现rt系统的adc有一个缺陷&#xff08;也可能是我移植的方法有问题&#xff0c;这就不得而知了&#xff01;&#xff09;&#xff0c;就是只能单次转换&#xff0c;事情是这样的&#xff1a; 我在stm32的RT-T…...

【启扬方案】启扬多尺寸安卓屏一体机,助力仓储物料管理系统智能化管理

随着企业供应链管理的不断发展&#xff0c;对仓储物料管理的要求日益提高。企业需要实时追踪和管理物料的流动&#xff0c;提高物流效率、降低库存成本和减少库存的风险。因此&#xff0c;仓储物料管理系统的实现成为必要的手段。 仓储物料管理系统一体机作为一种新型的物料管理…...

Android Glide使用姿势与原理分析

作者&#xff1a; 午后一小憩 简介 Android Glide是一款强大的图片加载库&#xff0c;提供了丰富的功能和灵活的使用方式。本文将深入分析Glide的工作原理&#xff0c;并介绍一些使用姿势&#xff0c;助你更好地运用这个优秀的库。 原理分析 Glide的原理复杂而高效。它首先基…...

管理类联考——逻辑——汇总篇——知识点突破——形式逻辑——联言选言——真假

角度——真值表 以上考点均是已知命题的真假情况做出的推理,还存在一种情况是已知肢判断P、Q的真假,断定干判断的真假,这种判断过程就是运用真值表。 P ∧ Q的真值 ①如何证明P ∧ Q为假? 由于P ∧ Q的本质是P、Q同时成立,所以只要P、Q有一个为假,整个命题就为假。 ②如…...

ChatGPT数据分析及作图插件推荐-Code Interpreter

今天打开chatGPT时发现一个重磅更新&#xff01;code interpreter插件可以使用了。 去查看openai官网&#xff0c;发现从2023.7.6号&#xff08;前天&#xff09;开始&#xff0c;code interpreter插件已经面向所有chatGPT plus用户开放了。 为什么说code interpreter插件是一…...

说说FLINK细粒度滑动窗口如何处理

分析&回答 Flink的窗口机制是其底层核心之一&#xff0c;也是高效流处理的关键。Flink窗口分配的基类是WindowAssigner抽象类&#xff0c;下面的类图示出了Flink能够提供的所有窗口类型。 Flink窗口分为滚动&#xff08;tumbling&#xff09;、滑动&#xff08;sliding&am…...

记一次反弹shell的操作【非常简单】

#什么是反弹shell 通常我们对一个开启了80端口的服务器进行访问时&#xff0c;就会建立起与服务器Web服务链接&#xff0c;从而获取到服务器相应的Web服务。而反弹shell是我们开启一个端口进行监听&#xff0c;转而让服务器主动反弹一个shell来连接我们的主机&#xff0c;我们再…...

如何排查 Flink Checkpoint 失败问题?

分析&回答 这是 Flink 相关工作中最常出现的问题&#xff0c;值得大家搞明白。 1. 先找到超时的subtask序号 图有点问题&#xff0c;因为都是成功没失败的&#xff0c;尴尬了。 借图&#xff1a; 2. 找到对应的机器和任务 方法很多&#xff0c;这里看自己习惯和公司提供…...

lazarus(pascal)和c语言读日志文件筛选保存为新文件

lazarus(pascal)和c语言读日志文件筛选保存为新文件&#xff0c;源于看日志每次从一个很多内容文件里查找不方便&#xff0c;写个代码输入时分秒参数&#xff0c;然后按行读取比较日志时间&#xff0c;当前秒和上一秒的输出保存为新文件&#xff0c;只保存2秒钟文件小多了&…...

学习JAVA打卡第四十九天

Random类 尽管可以使用math类调用static方法random&#xff08;&#xff09;返回一个0~1之间的随机数。&#xff08;包括0.0但不包括0.1&#xff09;&#xff0c;即随机数的取值范围是[0.0&#xff0c;1.0]的左闭右开区间。 例如&#xff0c;下列代码得到1&#xff5e;100之间…...

Golang数据结构和算法

Golang数据结构和算法 数据的逻辑结构和物理结构常见数据结构及其特点算法的时间复杂度和空间复杂度Golang冒泡排序Golang选择排序Golang插入排序Golang快速排序Golang归并排序Golang二分查找Golang sort包Golang链表Golang container/list标准库Golang栈stackGolang二叉搜索树…...

python 装饰器

装饰器是 Python 中一种功能强大的语法特性&#xff0c;它可以用于在不修改原函数代码的情况下&#xff0c;动态地扩展或修改函数的行为。装饰器本质上是一个函数或类&#xff0c;它接受一个函数作为参数&#xff0c;并返回一个新的函数或类。 下面是装饰器的详细解释和示例&a…...

iOS如何获取设备型号的最新方法总结

每一种 iOS 设备型号都有对应的一个或多个硬件编码/标识符&#xff0c;称为 device model 或者叫 machine name 通常的做法是&#xff0c;先获取设备的 device model 值&#xff0c;再手动映射为具体的设备型号&#xff08;或者直接把 device model 值传给后端&#xff0c;让后…...

SpringBoot之RestTemplate使用Apache的HttpClient连接池

SpringBoot自带的RestTemplate是没有使用连接池的&#xff0c;只是SimpleClientHttpRequestFactory实现了ClientHttpRequestFactory、AsyncClientHttpRequestFactory 2个工厂接口&#xff0c;因此每次调用接口都会创建连接和销毁连接&#xff0c;如果是高并发场景下会大大降低性…...

第49节:cesium 倾斜模型osgb转3dtiles,并加载(含源码+视频)

结果示例: 完整步骤: 1、启动并登陆cesiumlab 2、准备OSGB模型数据(含下载地址) 链接:https://pan.quark.cn/s/46ac7b0b2bed 提取码:TvWL3、倾斜模型切片 选择倾斜模型data文件夹 空间参考、零点坐标 默认 强制双面关闭、无光照 打开...

零信任安全模型详解:探讨零信任安全策略的原理、实施方法和最佳实践,确保在网络中实现最小特权原则

在当今日益复杂和危险的网络环境中&#xff0c;传统的网络安全模型已经不再能够满足对抗不断进化的威胁。零信任安全模型应运而生&#xff0c;以其强调“不信任&#xff0c;始终验证”的理念&#xff0c;成为了当今信息技术领域中的热门话题。本文将深入探讨零信任安全模型&…...

01_nodejs简介

01 【nodejs简介】 1.前言 Node 的重要性已经不言而喻&#xff0c;很多互联网公司都已经有大量的高性能系统运行在 Node 之上。Node 凭借其单线程、异步等举措实现了极高的性能基准。此外&#xff0c;目前最为流行的 Web 开发模式是前后端分离的形式&#xff0c;即前端开发者…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...