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

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

code review!

文章目录

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

bash 复制代码
# 定义具体的提交哈希
commit_hash=<commit-hash>

# 定义目标分支
branches=("branch1" "branch2" "branch3")

# 在每个目标分支上应用更改
for branch in "${branches[@]}"; do
  git checkout $branch
  git cherry-pick $commit_hash
  git push origin $branch
done

# 返回到最初的分支
git checkout source-branch

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

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

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

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

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

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

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

bash 复制代码
#!/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/$branch
  git clean -fd
  
  # 输出信息
  echo "分支 $branch 已重置为与远程保持一致。"
done

# 返回到最初的分支
git checkout $initial_branch

4.git cherry-pick的含义

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

用法

bash 复制代码
git cherry-pick <commit-hash>

主要特点

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

示例

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

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

    bash 复制代码
    git checkout B
    git cherry-pick <commit-hash>

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

相关推荐
CSDN_PBB3 小时前
[STM32 - 野火] - - - 固件库学习笔记 - - - 十五.设置FLASH的读写保护及解除
笔记·stm32·学习
夜流冰8 小时前
编程参考 - C语言可变参数
笔记
格雷亚赛克斯8 小时前
Qt笔记31-69
数据库·笔记·qt
Long_poem9 小时前
【自学笔记】版本控制与持续集成基础知识点总览-持续更新
笔记·ci/cd
Stream٩( 'ω' )و9 小时前
109~133笔记
笔记
weixin_5025398510 小时前
rust学习笔记2-rust的包管理工具Cargo使用
笔记·学习·rust
孤独得猿11 小时前
排序算法复习——包括插入排序、希尔排序、冒泡排序、快排(包括霍尔法、挖坑法、快慢指针法)、堆排、选择排序、归并排序等 (代码采用c/c++混编)
c语言·数据结构·c++·笔记·算法·排序算法
19999er12 小时前
框架&ThinkPHP(小迪网络安全笔记~
开发语言·笔记·安全·web安全·php
web_1553427465613 小时前
【合集】Java进阶——Java深入学习的笔记汇总 & 再论面向对象、数据结构和算法、JVM底层、多线程、类加载、
java·笔记·学习
rellvera13 小时前
【强化学习的数学原理】第08课-值函数近似-笔记
笔记