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

git笔记之在多个分支中复用某个分支提交的更改

git笔记之在多个分支中复用某个分支提交的更改

在这里插入图片描述
code review!

文章目录

  • git笔记之在多个分支中复用某个分支提交的更改
    • 1.实现该功能的 Bash 脚本示例
    • 2.这个脚本是否可以处理新添加的文件?
    • 3.该脚本使用前,应先使用下述脚本重置本地仓库所有分支与远程保持一致,确保干净的工作区
    • 4.git cherry-pick的含义
      • 用法
      • 主要特点
      • 示例

1.实现该功能的 Bash 脚本示例

# 定义具体的提交哈希
commit_hash=<commit-hash># 定义目标分支
branches=("branch1" "branch2" "branch3")# 在每个目标分支上应用更改
for branch in "${branches[@]}"; dogit checkout $branchgit cherry-pick $commit_hashgit push origin $branch
done# 返回到最初的分支
git checkout source-branch

2.这个脚本是否可以处理新添加的文件?

这个脚本可以处理新添加的文件,但有一些注意事项:

  1. 新文件的处理git cherry-pick会尝试将指定的提交(包含新文件的提交)应用到目标分支上。如果新文件在目标分支中不存在,cherry-pick会将其添加。

  2. 冲突的处理:如果目标分支中有与新文件同名的文件,或者其他更改导致冲突,cherry-pick会产生冲突,需要手动解决。

  3. 确保干净的工作区:在运行脚本之前,请确保工作树和索引中没有未提交的更改,以避免冲突或混乱。

因此,这个脚本可以应用包含新文件的提交,但在冲突的情况下需要额外的手动干预。

3.该脚本使用前,应先使用下述脚本重置本地仓库所有分支与远程保持一致,确保干净的工作区

#!/bin/bash# 获取当前所在的分支
initial_branch=$(git rev-parse --abbrev-ref HEAD)# 从远程拉取所有最新的信息
git fetch --all# 获取所有的本地跟踪分支
branches=($(git branch -r | grep -v '\->' | while read remote; do echo ${remote#origin/}; done))# 遍历每个分支
for branch in "${branches[@]}"; do# 切换到该分支git checkout $branch || { echo "无法切换到分支: $branch"; continue; }# 从远程拉取最新代码并强制更新git reset --hard origin/$branchgit clean -fd# 输出信息echo "分支 $branch 已重置为与远程保持一致。"
done# 返回到最初的分支
git checkout $initial_branch

4.git cherry-pick的含义

git cherry-pick 是一个 Git 命令,用于将某个提交(或多个提交)的更改从一个分支复制到另一个分支。它的主要用途是选择性地应用特定的提交,而不需要合并整个分支。

用法

git cherry-pick <commit-hash>

主要特点

  • 选择性应用:只应用指定的提交,不影响其他提交。
  • 有助于修复问题:快速将 bug 修复从一个分支移植到另一个分支。
  • 冲突处理:如果存在冲突,需要手动解决并继续。

示例

  1. 在分支 A 上进行更改并提交

    git checkout A
    # 做一些更改
    git commit -m "Fix issue #123"
    
  2. 切换到分支 B 并应用提交

    git checkout B
    git cherry-pick <commit-hash>
    

这样,分支 B 就会包含在 A 上的特定更改。

http://www.lryc.cn/news/444901.html

相关文章:

  • HTML、CSS
  • 数据文件(0)
  • Go语言并发模式详解:深入理解管道与上下文的高级用法
  • 标准文档流解析及 CSS 中的相关特性
  • 水下攻防面试题
  • vmware 虚拟机多屏幕或添加屏幕
  • 鹏哥C语言49-51---第6次作业:循环语句 for 和 while
  • springboot中药材进存销管理系统
  • GitHub上图像超分开源项目推荐【持续更新】
  • 浅谈软件测试的基础知识(1)
  • Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐
  • 基于opencv的车牌检测和识别系统(代码+教程)
  • list(二) (list模拟实现)
  • [Linux]从零开始的泰山派系统安装与远程教程
  • Python国产新 ORM 框架 fastzdp_sqlmodel 快速入门教程
  • 面试速通宝典——3
  • 每天一个数据分析题(四百七十三)- 元数据
  • 产品经理面试整理-练习常见面试问题
  • 一步到位的智慧:BI可视化大屏在复杂环境中如何精准拾取目标
  • 前端开发迎来新机会,全栈转型就靠这个!
  • 关于less的基本使用
  • python 将 aac 转为 mp3,保持原有目录结构
  • 考研数据结构——C语言实现折半查找
  • 【游戏引擎】C++自制游戏引擎 Lunar Game Engine
  • 使用【Sa-Token】实现Http Basic 认证
  • layui table中的checkbox禁用问题
  • 102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败
  • 20240923软考架构-------软考186-190答案解析
  • 基于Spring Boot的宠物咖啡馆平台【附源码】
  • C++模拟实现list:list、list类的初始化和尾插、list的迭代器的基本实现、list的完整实现、测试、整个list类等的介绍