try learning-git-branching

文章目录

      • merge
      • rebase
      • 分离 HEAD
      • 相对引用
        • 利用父节点
        • branch -f
      • 撤销变更
      • cherry-pick
      • 交互式 rebase
      • 只取一个提交记录
      • 提交的技巧
        • rebase 在上一次提交上amend
        • cherry-pick 在上一次提交上 amend
      • tag
      • 多分支 rebase
      • 两个parent节点
      • 纠缠不清的分支
      • 偏离的提交历史
      • 锁定的Main
      • 推送主分支
      • 合并远程仓库
      • 远程跟踪
      • push 的参数
      • push 的参数2
      • fetch 的参数
      • 没有 source 的 source
      • pull 参数

发现一个小工具,复习一下 git 相关的操作,对 git 的一些命令又有了深入的理解。
learning git branching

merge

  • 创建新分支 bugFix
  • git checkout bugFix 命令切换到该分支
  • 提交一次
  • git checkout main 切换回 main
  • 再提交一次
  • git mergebugFix 合并到 main
git checkout -b bugFix
git commit 
git checkout main
git commit
git merge bugFix

请添加图片描述

rebase

操作:

  • 新建并切换到 bugFix 分支
  • 提交一次
  • 切换回 main 分支再提交一次
  • 再次切换到 bugFix 分支,rebase 到 main 上
git checkout -b bugFix
git commit 
git checkout main
git commit
git checkout bugFix
git rebase main

请添加图片描述

分离 HEAD

git checkout c4

请添加图片描述

相对引用

利用父节点
git checkout HEAD^

寻找 bugFix 的父节点

git checkout bugFix^

请添加图片描述

branch -f

强制修改分支位置

git branch -f bugFix c0
git branch -f main c6
git checkout c1

请添加图片描述

或者

git checkout c1
git branch -f bugFix HEAD~1
git branch -f main c6

请添加图片描述

撤销变更

git reset HEAD~1
git checkout pushed
git revert HEAD

请添加图片描述

cherry-pick

git cherry-pick c3 c4 c7

请添加图片描述

交互式 rebase

git rebase -i HEAD~4

请添加图片描述

只取一个提交记录

git rebase -i main
git branch -f main bugFix

请添加图片描述

或者

git checkout main
git cherry-pick bugFix

请添加图片描述

提交的技巧

rebase 在上一次提交上amend
git rebase -i main
git commit --amend
git rebase -i main
git branch -f main caption

请添加图片描述

或者(多种方法尝试)

git rebase -i caption~2
git commit --amend
git rebase -i HEAD~2
git branch -f main caption
cherry-pick 在上一次提交上 amend
git checkout main
git cherry-pick newImage
git commit --amend
git cherry-pick caption

请添加图片描述

tag

git tag v0 c1
git tag v1 c2
git checkout v1

请添加图片描述

多分支 rebase

git rebase main bugFix
git rebase bugFix side
git rebase side another
git branch -f main another

请添加图片描述

两个parent节点

操作符 ^~ 符一样,后面也可以跟一个数字。

但是该操作符后面的数字与 ~ 后面的不同,并不是用来指定向上返回几代,而是指定合并提交记录的某个 parent 提交。还记得前面提到过的一个合并提交有两个 parent 提交吧,所以遇到这样的节点时该选择哪条路径就不是很清晰了。

Git 默认选择合并提交的“第一个” parent 提交,在操作符 ^ 后跟一个数字可以改变这一默认行为。

git checkout HEAD~^2~
git branch -f bugWork HEAD  # git branch -f bugWork
git checkout main

请添加图片描述

或者

git branch bugWork HEAD~^2~

请添加图片描述

纠缠不清的分支

git checkout one
git cherry-pick c4 c3 c2
git checkout two
git cherry-pick c5 c4 c3 c2
git branch -f three c2

请添加图片描述

偏离的提交历史

git clone
git fakeTeamwork
git commit
git fetch
git rebase o/main
git push

请添加图片描述

或者

git clone
git fakeTeamwork
git commit
git pull --rebase
git push

请添加图片描述

锁定的Main

git reset --hard o/main
git checkout -b feature c2
git push   # git push origin feature

请添加图片描述

推送主分支

git fetch
git rebase o/main side1
git rebase side1 side2
git rebase side2 side3
git rebase side3 main
git push

请添加图片描述

合并远程仓库

git fetch
git rebase o/main main
git merge side1
git merge side2
git merge side3
git push

请添加图片描述

远程跟踪

git checkout -b side o/main
git commit
git fetch
git rebase o/main side
git push

或者

git checkout -b side o/main
git commit
git pull --rebase
git push

请添加图片描述

push 的参数

git push origin main
git push origin foo

请添加图片描述

push 的参数2

git push origin foo:main
git push origin main^:foo

请添加图片描述

fetch 的参数

git fetch origin c3:foo
git fetch origin c6:main
git checkout foo
git merge main

请添加图片描述

没有 source 的 source

git push origin :foo
git fetch origin :bar

请添加图片描述

pull 参数

git pull 到头来就是 fetch 后跟 merge 的缩写。可以理解为用同样的参数执行 git fetch,然后再 merge 所抓取到的提交记录。

git pull origin foo 相当于:git fetch origin foo; git merge o/foo

git pull origin bar:bugFix 相当于:git fetch origin bar:bugFix; git merge bugFix

git fetch origin c3:foo
git fetch origin c2:side
git merge foo
git merge side

或者

git pull origin c3:foo
git pull origin c2:side

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了(有proto接口了),前端还没搞完时(暂还没接入proto),后端可使用此请求,可自测 响应(SC)_可自行构建一个响应(有些特殊数据后端下发不了的),对数据进行测试 // 请…

Linux探秘坊-------8.进程详解

1.概念详解 1.运行&&阻塞&&挂起 内容基础:方框中的就是调度队列,是一个 双向队列,每一个元素是PCB其对应的代码数据 1.运行 只要进程 在调度队列中,进程的状态就是运行(running). 2.阻塞…

VUE 集成高德地图部署到nginx后打开不了,控制台报错

VUE 集成高德地图部署到nginx后打开不了,控制台报错:xxxxxxx,because it violates the following Content Security Policy directive: “script-src ‘self’ https://webapi.amap.com ‘unsafe-inline’ ‘unsafe-eval’ blob: data:”. Note that ‘script-src-e…

解决vue-awesome-swiper 4.x + swiper 5.x 分页pagination配置不生效问题

这次给的需求需要实现几个轮播图,我打算用swiper来做。刚开始我参照同事之前实现的swiper,复制到我的新页面中,是可用的。但是这次的需求需要有底下的分页pagination,而且因为版本比较老,比较难找到配置项。这里说一下…

Linux中线程创建,线程退出,线程接合

线程的简单了解 之前我们了解过 task_struct 是用于描述进程的核心数据结构。它包含了一个进程的所有重要信息,并且在进程的生命周期内保持更新。我们想要获取进程相关信息往往从这里得到。 在Linux中,线程的实现方式与进程类似,每个线程都…

Unity Muse AIGC工具

这篇介绍unity3D的AIGC工具,Unity Muse,实现文本生成材质、动画、聊天等功能。 一、关于Unity Muse Unity Muse Unity Muse:利用 AI 释放您的创造潜力 | Unity 利用编辑器内置的 AI 更快地将你的想法变成现实 使用Unity Muse&#xff0c…

UART(一)——UART基础

一、定义 UART(Universal Asynchronous Receiver/Transmitter)是一种广泛使用的串行通信协议,用于在设备间通过异步方式传输数据。它无需共享时钟信号,而是依赖双方预先约定的参数(如波特率)完成通信。 功能和特点 基本的 UART 系统只需三个信号即可提供稳健的中速全双工…

【MyBatis】预编译SQL与即时SQL

目录 1. 以基本类型参数为例测试#{ }与${ }传递参数的区别 1.1 参数为Integer类型 1.2 参数为String类型 2. 使用#{ }传参存在的问题 2.1 参数为排序方式 2.2 模糊查询 3. 使用${ }传参存在的问题 3.1 SQL注入 3.2 对比#{ } 与 ${ }在SQL注入方面存在的问题 3.3 预编译…

Redis 03章——10大数据类型概述

一、which10 (1)一图 (2)提前声明 这里说的数据类型是value的数据类型,key的类型都是字符串 官网:Understand Redis data types | Docs (3)分别是 1.3.1redis字符串&#xff0…

Linux:线程概念、理解、控制

目录 一、认识线程 1.认识线程V1 2.认识线程V2 3.认识线程V3 4.认识线程V4 5.认识线程V5 二、线程控制 1.前言 2.创建线程 3.线程等待 4.线程终止 5.线程分离 三、线程理解 一、认识线程 1.认识线程V1 借用大多数计算机教材的话,线程是进程的一个执行…

maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时

1、问题背景:maven使用默认settings.xml配置时,Idea基于pom.xml更新依赖时报错,有些组件下载时连接超时, 通过日志发下,去连接maven.org网站下载依赖,有时候肯定会超时。 2、解决办法:使用国外…

【第3章:卷积神经网络(CNN)——3.5 CIFAR-10图像分类】

嘿,小伙伴们,今天咱们来聊聊一个超级酷炫的话题——卷积神经网络(CNN)及其在CIFAR-10图像分类中的应用。这不仅仅是一个技术话题,更是一场探索人工智能奥秘的旅程。准备好了吗?咱们这就发车! 一、CNN:人工智能的“千里眼” 首先,咱们得知道CNN是啥。CNN,全名Convol…

Win10环境借助DockerDesktop部署大数据时序数据库Apache Druid

Win10环境借助DockerDesktop部署最新版大数据时序数据库Apache Druid32.0.0 前言 大数据分析中,有一种常见的场景,那就是时序数据,简言之,数据一旦产生绝对不会修改,随着时间流逝,每个时间点都会有个新的…

【射频仿真技巧学习笔记】Cadence修改图表背景、曲线颜色

很多初始设置的Cadence仿真出来的曲线是长下面这样的,背景是黑色,而且曲线是Dot点状fine细线,这样查看图像会很不方便 如果一条一条去改曲线的性质会很不方便, 这里我介绍两种方法 方法一 首先打开virtuoso的初始界面 在命令…

【Vue3源码解析】应用实例创建及页面渲染

下载源码 git clone https://github.com/vuejs/core.git写该文章时的Vue版本为: "version": "3.5.13",这里要注意 pnpm 的版本不能太低,我此时的版本为 9.15.4。更新 pnpm 版本: npm install -g pnpm然后安装依赖&…

Ubuntu 系统 cuda12.2 安装 MMDetection3D

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” 贵在坚持! ---------------------------------------…

云贝餐饮连锁V3独立版全开源+vue源码

一.介绍 云贝餐饮连锁V3独立版,作为一款全开源、全插件的源码部署系统,其在餐饮行业软件系统中独树一帜。该系统不仅功能全面,涵盖了餐饮连锁企业的日常运营、财务管理、库存管理、会员管理等多个方面,而且框架结构清晰&#xff…

learngit git常用指令

learngit & git常用指令 目录 learngit & git常用指令1.add && commit2.status && diff3.log && reset && reflog4.Repositoty(版本库)5.checkout6.rm7.github(push && rm)8.clone9.branch && switch && merg…

算法1-7 搜索

目录 1 深度优先搜索 1.1 P1219 八皇后 1.2 P1135 深搜剪枝 1.3 P1605 多路深搜回溯 2 广度优先搜索 2.1 P1443 马的遍历 3 多方向搜索 3.1 P1101 单词方阵 1 深度优先搜索 需要考虑深度的情况: 固定长度组合:当问题要求生成确定长度的组合&…

响应式布局学习笔记

什么是响应式布局? 响应式布局(Responsive Web Design)是一种网页设计方法,使网站能够根据设备屏幕尺寸(如手机、平板、电脑)自动调整内容和布局,提供最佳浏览体验。 如何调试响应式布局&…