【随笔】Git 高级篇 -- 提交的技巧(上) rebase commit --amend(十八)

news2024/11/27 4:17:21

请添加图片描述

  • 💌 所属专栏:【Git】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘

文章目录

  • 前言
  • 一、提交的技巧
      • 1、介绍
      • 2、示范
      • 3、实战
        • (1)第一种方法:rebase
        • (2)第二种方法:cherry-pick
  • 总结


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Git】专栏的第十八篇文章;
  这是今天学习到Git 高级篇 – 提交的技巧 💖💖💖,开启新的征程,记录最美好的时刻🎉,每天进步一点点。
  专栏地址:【Git】 , 此专栏是我是夜阑的狗对Git,Gitee等工具使用过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、提交的技巧

  这里给大家推荐一个好用的 Git在线练习地址。在这练习网站里面也有自己的教程,就让我们一步一步跟着教程学习吧,记录下自己的所感所悟。前面已经简单的讲解了整理提交记录的用法,在实际开发过程中有时候想把修改其中不是最新的 commit,这让我们很困扰,接下来就让我们看看下面是怎么解决的吧。话不多说,让我们原文再续,书接上回吧。

在这里插入图片描述

1、介绍

  接下来这种情况也是很常见的:你之前在 newImage 分支上进行了一次提交,然后又基于它创建了 caption 分支,然后又提交了一次。
  此时你想对某个以前的提交记录进行一些小小的调整。比如设计师想修改一下 newImage 中图片的分辨率,尽管那个提交记录并不是最新的了。

2、示范

  我们可以通过以下步骤来进行解决:

  • Step 1、先用 git rebase -i 将提交重新排序,然后把我们想要修改的提交记录挪到最前;
  • Step 2、然后用 git commit --amend 来进行一些小修改;
  • Step 3、接着再用 git rebase -i 来将他们调回原来的顺序;
  • Step 4、最后我们把 main 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!

  当然完成这个任务的方法不止上面提到的一种(也可以通过 cherry-pick 来进行解决),之后我们会多点关注这些技巧啦,但现阶段先讲解上面这种方法。 最后有必要说明一下目标状态中的那几个’ —— 我们把这个提交移动了两次,每移动一次会产生一个 ';而 C2 上多出来的那个是我们在使用了 amend 参数提交时产生的,所以最终结果就是这样了。
  也就是说,我在对比结果的时候只会对比提交树的结构,对于 ’ 的数量上的不同,并不纳入对比范围内。只要你的 main 分支结构与目标结构相同,就算通过啦。

3、实战

  从前面了解到具体的实现的步骤,就可以开始实战啦。这里先给大家说一下这个练习网站的一些使用技巧,

  • help 指令

  执行这个命令后就会有个帮助信息的弹窗。

在这里插入图片描述

  • levels 指令

  执行完这个命令之后就能看到关卡目录了。

在这里插入图片描述

  • 目标

在这里插入图片描述

  • 开始结构

在这里插入图片描述

(1)第一种方法:rebase
  • Step 1、重新排序

  首先我们需要将提交重新排序, 然后把想要修改的提交记录挪在最前面。

git rebase -i HEAD~2

  运行结果如下图所示:

请添加图片描述

  • Step 2、修改提交

  使用 commitamend 参数来对提交记录进行修改。

git commit --amend

  运行结果如下图所示:

请添加图片描述

  • Step 3、调回顺序

  修改完提交记录后,在把提交顺序重新调整回去。

git rebase -i HEAD~2

  运行结果如下图所示:

请添加图片描述

  • Step 4、合并main

  最后将改动重新合并到 main 分支中。

git rebase caption main

  运行结果如下图所示:

在这里插入图片描述

  达成目标之后就会有成功的提示。

在这里插入图片描述

(2)第二种方法:cherry-pick

  前面也说到了,除了用 rebase -i 外,还要其他方法,接下来就来讲讲怎么用 cherry-pick 来实现吧,注意:本方法不是适用于通该关,因为网址作者限制了在本关使用 cherry-pick 命令。 所以我们只能去非 DEMO 版本是实现了。

在这里插入图片描述
  网址的 非 DEMO 版本 这个连接点击进入,进入之后立马只有 main 分支,需要我们去搭建题目环境,以下就是搭建题目环境的命令。
在这里插入图片描述

git checkout -b newImage
git commit
git checkout -b JMFive
git commit

  通过以上命令就可以得到跟题目一样的分支了,这样我们就可以开始解决问题啦,运行结果如下图所示:

在这里插入图片描述

  • Step 1、指向main哈希值

  这里需要分离 HEAD 状态,不建议直接指向 main 分支进行操作,而是通过操作 HEAD 指针,最后在把 HEAD 合并到 main 分支即可。

git checkout C1

  运行结果如下图所示:

在这里插入图片描述

  • Step 2、选择需修改的分支

  通过 cherry-pick 选择需要修改分支,生成出新的分支。

git cherry-pick C2

  运行结果如下图所示:

在这里插入图片描述

  • Step 3、修改提交

  使用 commitamend 参数来对提交记录进行修改。

git commit --amend

  运行结果如下图所示:

在这里插入图片描述

  • Step 4、指向 main

  将 分离 HEAD 状态重新指向 main 分支。

git checkout main

  运行结果如下图所示:

在这里插入图片描述

  • Step 5、合并 main

  最后将改动重新合并到 main 分支中。

git cherry-pick C2'' C3

  运行结果如下图所示:

请添加图片描述


总结

  感谢观看,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹 🌹 🌹

在这里插入图片描述

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。🎉

更多专栏订阅:

  • 😀 【LeetCode题解(持续更新中)】
  • 🌼 【鸿蒙系统】
  • 👑 【Python脚本笔记】
  • 🚝 【Java Web项目构建过程】
  • 💛 【微信小程序开发教程】
  • 【JavaScript随手笔记】
  • 🤩 【大数据学习笔记(华为云)】
  • 🦄 【程序错误解决方法(建议收藏)】
  • 🚀 【软件安装教程】



订阅更多,你们将会看到更多的优质内容!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙南向开发:【智能烟感】

样例简介 智能烟感系统通过实时监测环境中烟雾浓度,当烟雾浓度超标时,及时向用户发出警报。在连接网络后,配合数字管家应用,用户可以远程配置智能烟感系统的报警阈值,远程接收智能烟感系统报警信息。实现对危险及时报…

python 如何生成uuid

UUID(Universally Unique Identifier)是通用唯一识别码,在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。作为新手一看到类似varchar(40)这样的主键就觉得有…

ctf刷题记录2(更新中)

因为csdn上内容过多编辑的时候会很卡&#xff0c;因此重开一篇&#xff0c;继续刷题之旅。 NewStarCTF 2023 WEEK3 Include &#x1f350; <?phperror_reporting(0);if(isset($_GET[file])) {$file $_GET[file];if(preg_match(/flag|log|session|filter|input|data/i, $…

笔记 | 编译原理L1

重点关注过程式程序设计语言编译程序的构造原理和技术 1 程序设计语言 1.1 依据不同范型 过程式(Procedural programming languages–imperative)函数式(Functional programming languages–declarative)逻辑式(Logical programming languages–declarative)对象式(Object-or…

解决游戏霍格沃兹找不到EMP.dll问题的5种方法

在玩《霍格沃兹》游戏时&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是“缺少dll文件”。其中&#xff0c;EMP.dll文件丢失是一个常见的问题。这个问题可能会导致游戏无法正常运行或出现各种错误。为了解决这个问题&#xff0c;本文将介绍5种解决方法&#x…

【线段树】【前缀和】:1687从仓库到码头运输箱子

本题简单解法 C前缀和算法的应用&#xff1a;1687从仓库到码头运输箱子 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 线段树 LeetCode1687从仓库到码头运输箱子 你有一辆货运卡车&#xff0c;你需要用这一辆车…

paddle实现手写数字模型(一)

参考文档&#xff1a;paddle官网文档环境&#xff1a;Python 3.12.2 &#xff0c;pip 24.0 &#xff0c;paddlepaddle 2.6.0 python -m pip install paddlepaddle2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple调试代码如下&#xff1a; LeNet.py import paddle import p…

初学python记录:力扣1600. 王位继承顺序

题目&#xff1a; 一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点&#xff0c;这个家庭里有人出生也有人死亡。 这个王国有一个明确规定的王位继承顺序&#xff0c;第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) &#xff0c;给定一个人…

数据结构——二叉树——二叉搜索树(Binary Search Tree, BST)

目录 一、98. 验证二叉搜索树 二、96. 不同的二叉搜索树 三、538. 把二叉搜索树转换为累加树 二叉搜索树&#xff1a;对于二叉搜索树中的每个结点&#xff0c;其左子结点的值小于该结点的值&#xff0c;而右子结点的值大于该结点的值 一、98. 验证二叉搜索树 给你一个二叉树的…

GAMES Webinar 317-渲染专题-图形学 vs. 视觉大模型|Talk+Panel形式

两条路线&#xff1a;传统渲染路线&#xff0c;生成路线 两种路线的目的都是最终生成图片或者视频等在现在生成大火的情况下&#xff0c;传统路线未来该如何发展呢&#xff0c;两种路线是否能够兼容呢 严令琪 这篇工作是吸取这两条路各自优势的一篇工作 RGB是一张图&#xff…

好用的AI智能工具:AI写作、AI绘画、AI翻译全都有

在科技不断进步的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们日常生活中不可或缺的一部分。它不仅在各个领域都有应用&#xff0c;还为我们提供了许多方便快捷的工具。对此&#xff0c;小编今天推荐7款人工智能软件&#xff0c;AI写作、AI绘画、AI翻译全都…

Vue - 你知道Vue组件之间是如何进行数据传递的吗

难度级别:中级及以上 提问概率:85% 这道题还可以理解为Vue组件之间的数据是如何进行共享的,也可以理解为组件之间是如何通信的,很多人叫法不同,但都是说的同一个意思。我们知道,在Vue单页面应用项目中,所有的组件都是被嵌套在App.vue内…

2024/4/1—力扣—BiNode

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/void convertBiNode_pro(struct TreeNode *root, struct TreeNode **p) {if (root) {convertBiNode_pro(roo…

Git - 如何重置或更改 Git SSH 密钥的密码?

Git 使用 ssh 方式拉取代码时&#xff0c;报 ssh password login&#xff0c;提示输入密码&#xff0c;这时很容易误填为 Git 的登录密码&#xff0c;其实这时需要输入 SSH 证书的密码&#xff0c;下面直接提供更改以及重新导入证书的方式。 首先需要确认你的本地是否有 SSH 钥…

HIS系统是什么?一套前后端分离云HIS系统源码 接口技术RESTful API + WebSocket + WebService

HIS系统是什么&#xff1f;一套前后端分离云HIS系统源码 接口技术RESTful API WebSocket WebService 医院管理信息系统(全称为Hospital Information System)即HIS系统。 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等&…

与汇智知了堂共舞,HW行动开启你的网络安全新篇章!

**网安圈内一年一度的HW行动来啦&#xff01; ** 招募对象 不限&#xff0c;有HW项目经验 或持有NISP二级、CISP证书优先 HW时间 以官方正式通知为准 工作地点&#xff1a;全国 薪资待遇 带薪HW &#xff08;根据考核成绩500-4000元/天不等&#xff09; 招募流程 1.填写报名…

中科数安 || 公司电脑文件资料防泄密系统

#公司电脑文件资料防泄密# 中科数安推出的公司电脑文件资料防泄密系统&#xff0c;是一款专为企业电脑终端设计的数据安全解决方案&#xff0c;旨在全方位保护公司电脑中存储、处理、传输的各类文件资料免遭非法窃取、泄露或滥用。 中科数安 || 文件数据资料防泄密软件 PC地址…

第二十五周代码(蓝桥杯查缺补漏)

2024/03/31 周日 填充 题目链接 【参考代码】 想用暴力&#xff0c;没过 //枚举&#xff0c;未出结果QAQ #include <bits/stdc.h> using namespace std; string s00 "00"; string s11 "11"; int ans 0; //m个问号&#xff0c;子串有2^m…

如何本地搭建Discuz论坛并实现无公网IP远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

基于velero和minio实现k8s数据的备份

1.30部署minio rootk8s-harbor:/etc/kubeasz/clusters/k8s-cluster1# docker run \ -d --restartalways -p 9000:9000 -p 9090:9090 –name minio -v /data/minio/data:/data -e “MINIO_ROOT_USERadmin” -e “MINIO_ROOT_PASSWORD12345678” quay.io/minio/minio server…