当前位置: 首页 > 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;即前端开发者…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

Linux入门课的思维导图

耗时两周&#xff0c;终于把慕课网上的Linux的基础入门课实操、总结完了&#xff01; 第一次以Blog的形式做学习记录&#xff0c;过程很有意思&#xff0c;但也很耗时。 课程时长5h&#xff0c;涉及到很多专有名词&#xff0c;要去逐个查找&#xff0c;以前接触过的概念因为时…...