如何有选择地合并或选择 Git 中另一个分支的更改?

2023-11-21

我正在一个新项目上使用 Git,该项目有两个并行的(但目前是实验性的)开发分支:

  • master:导入现有代码库以及我通常确定的一些修改
  • exp1:实验分支#1
  • exp2:实验分支#2

exp1 and exp2代表了两种截然不同的架构方法。在我进一步了解之前,我无法知道哪一个(如果有的话)会起作用。当我在一个分支中取得进展时,有时我会进行一些在另一分支中有用的编辑,并且想合并这些内容。

将选择性更改从一个开发分支合并到另一个开发分支,同时保留其他所有内容的最佳方法是什么?

我考虑过的方法:

  1. git merge --no-commit然后手动取消暂存大量我不想在分支之间共享的编辑。

  2. 手动将常用文件复制到临时目录中,然后git checkout移动到另一个分支,然后更多地手动将临时目录复制到工作树中。

  3. 上述的一个变体。放弃exp现在分支并使用两个额外的本地存储库进行实验。这使得手动复制文件变得更加简单。

所有这三种方法似乎都很乏味且容易出错。我希望有更好的方法;类似于过滤器路径参数的东西git-merge更有选择性。


tl;dr

git checkout source_branch -- path/to/file
# resolve conflicts if any
git commit -am '...'

我遇到了与您上面提到的完全相同的问题。但我发现this更清楚地解释答案。

Summary:

  • 查看要合并的分支的路径,

     $ git checkout source_branch -- <paths>...
    
    Hint: It also works without `--` like seen in the linked post.
    
  • 或者选择性地合并帅哥

     $ git checkout -p source_branch -- <paths>...
    

或者,使用重置,然后使用选项添加-p,

    $ git reset <paths>...
    $ git add -p <paths>...
  • 最后提交

     $ git commit -m "'Merge' these changes"
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有选择地合并或选择 Git 中另一个分支的更改? 的相关文章

  • 如何仅根据拉取请求在 Jenkins 中运行阶段?

    我现在有一个基于 Jenkinsfile 的管道 其中包含多个阶段 每次提交到 Github 时都会由 webhook 触发 我想在每次提交时保持 构建 和 单元测试 阶段运行 但仅在分支准备拉取请求时运行 集成测试 阶段 我想要的是 st
  • 仅使用 git 存储未暂存的更改(不是 --keep-index)

    首先 我确实知道 keep index 这不是我想要的 因为它仍然隐藏着all更改 但将暂存的更改保留在工作树中 如果可能的话 我只想存储未暂存的文件 而无需再次添加所有更改git stash patch 如果您想存储索引 已暂存的内容 和
  • BitBucket 应用程序密码:git 命令行访问有哪些权限?

    我了解如何为 BitBucket 创建应用程序密码 如中所述Atlassian 的应用程序密码信息 https support atlassian com bitbucket cloud docs app passwords and 这个答
  • 使用 git 合并两个截然不同的分支?

    我有我的master分支和我的verydifferentbranch它们有相同的祖先 大约 300 次提交前 现在verydifferentbranch功能完整我想把它放在master下面branch 进行变基会导致每个补丁都有很多合并冲突
  • 无法在 Windows 10 上运行 Python 3.7“权限被拒绝”

    当尝试使用 Git Bash 在 Windows 10 上运行 Python 3 7 时 出现以下错误 python version bash c Users Name AppData Local Microsoft WindowsApps
  • Git hook:如果创建了新分支,则将新文件添加到存储库

    我正在编写一个 git hook 它检查是否创建了新分支 如果是 则将一些预定义文件添加到该新分支的存储库中 一些配置文件 然而 由于分支实际上正在创建过程中 所以我的逻辑失败了 目前我正在这样做post receive钩子 看起来像这样
  • 如何将yarn add/npm install与monorepos一起使用

    我需要从 GitHub 中的私有 monorepo 下载节点包 类似于 monorepoProject subProjectA subProjectB 还有两个子项目A and 子项目B是 typescript 项目 如下图所示 subPr
  • 为什么 git 默认执行快进合并?

    来自 Mercurial 我使用分支来组织功能 当然 我也希望在我的历史中看到这个工作流程 我使用 git 开始了我的新项目并完成了我的第一个功能 当合并该功能时 我意识到 git 使用快进 即如果可能的话 它会将我的更改直接应用到主分支
  • Git:repo 包含一个空目录 - 会发生什么?

    Git 跟踪文件 而不是目录 https stackoverflow com questions 5091017 和我们目前不能add空目录 https stackoverflow com questions 11600188 The 标准
  • 使用 Homebrew 安装 Git 时出现问题 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Homebrew 升级 Git 时出现问题 https stackoverflow com questions 12362021 problems upgrading git with home
  • Jenkins 多分支:更改 Groovy 的工作描述

    我在詹金斯的多分支项目工作正常 但我想修改job描述 默认情况下为 完整项目名称 xxxx 以更有意义 我可以使用以下命令轻松更改构建描述currentBuild当我的变量Jenkinfile已执行 但我不知道如何修改父作业描述 我的用例是
  • 如何使用 vim 作为寻呼机设置彩色 git diff

    我无法配置 git 来遵循我的请求 使用 vim 作为差异分页器 在交互模式下添加文件时保留差异颜色 My gitconfig setup color ui auto diff false pager diff vim 通过此配置 交互模式
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看
  • 将各种提交合并为一而不合并

    是否可以加入各种提交 这是我的情况 我的应用程序在 OSX 10 6 和 10 7 中运行 我已经修复了 10 6 的一些内容 然后提交了 更改为 10 7 并再次修复修复程序 以便它们兼容 然后再次提交 然后返回到 10 6 并再次检查并
  • GIT:向非当前分支添加本地更改

    我通常会遇到这样的情况 我做了一些本地更改 却发现我在错误的分支上进行了更改 因此我需要在提交之前切换分支 问题是当有本地更改时我无法切换分支 有办法做到这一点吗 显然 我可以复制更新的文件 切换分支 然后将它们复制回来 但这看起来并不聪明
  • 如何使用 vim 作为“git log”编辑器?

    当我跑步时git log 编辑器到底是什么git log正在使用 Also 无论如何我可以使用吗vim作为我的默认编辑器git log 如果我想搜索 git 日志 最好的方法是什么 现在我正在做类似的事情 git log grep bla
  • GIT 中的 Fastlane 应用程序文件?如何检索当前的 apple_id?

    我为我的 XCode 项目设置了 Fastlane 来实现构建自动化 至少 Fastfile 包含构建选项 应该位于 GIT 中 但我也很高兴 Appfile 团队标识符 也位于 GIT 中 主要问题 Appfile 应该包含我的 appl
  • Git 将开发分支与生产版本的主分支合并

    我正在使用 Git 进行代码版本控制 我有一个开发分支 我正在其中进行所有肮脏的开发 每次我向世界发布生产版本时 我都想将其放在我的 master 分支下 问题是 每当我合并开发和 master 时 master 都会收到所有开发历史记录
  • 如何保持 git 存储库的公共和私有版本同步?

    我正在 Github 上发布一个开源 Rails 应用程序 可能是 MIT 许可证 我还想维护一个项目的私人分支 分支 我们将使用它作为付费服务的一部分 在这种情况下组织存储库的最佳方式是什么 而且 当我有两个项目的更新时 如何保持项目同步
  • git log 不按时间顺序排列

    我在一个公共项目 B2G 又名 FirefosOS 上意外发现 git log 输出不是按时间顺序排列的 git clone https git mozilla org releases gecko git git log graph fo

随机推荐

  • 如何在 Swift 的 Xcode 6 的 Storyboard 中成功添加图像?

    我对 Xcode 非常陌生 2 天 到目前为止我发现它相当令人沮丧 我只是想通过 Storyboard 将图像添加到我的应用程序的 ViewController 但它不会出现在模拟器上 有人可以帮助我吗 如果您正在尝试 XCode 的示例项
  • 彩色输出打破了 readline 的换行

    我正在使用 Ruby 中的 readline 对一些输出进行着色 但我没有运气让换行正常工作 例如 e 01 32mThis prompt is green and bold e 00m gt 期望的结果是 This prompt is g
  • 使用 csv 和 quantmod 加载多个符号

    我正在尝试使用 csv 文件加载多个符号 而不是从雅虎下载 原始代码运行良好并且使用 load packages quantmod tickers spl TLT IWM GLD data lt new env getSymbols tic
  • MySQL - 从多个具有相同结构但不同数据的表中选择数据

    好吧 这是我的困境 我有一个数据库 其中设置了大约 5 个表 所有表都具有完全相同的数据结构 以这种方式分离数据是为了本地化目的 并划分总共约 450 万条记录 大多数时候只需要一张桌子 一切都很好 但是 有时需要来自 2 个或更多表的数据
  • Node.js NODE_PATH 环境变量

    在开发过程中我曾经WebStorm node path 环境变量 我在项目设置的启动中设置了一个变量 现在我想尝试在服务器上运行该项目 但不知道如何在那里设置这个变量 帮忙解决问题 假设它是 UNIX 或 Mac OS X 服务器 请使用e
  • 无法从 Moto 360 读取心率传感器 - Android Wear

    有人成功读取 Moto 360 的心率传感器吗 mSensorManager SensorManager getSystemService SENSOR SERVICE mHeartRateSensor mSensorManager get
  • NSNotificationCenter 和安全多线程

    鉴于即使方法调用正在进行中 对象也可能被释放 link 对象注册并接收将在与其预期释放的线程不同的线程上传递的通知是否安全 作为参考 文档指出 在多线程应用程序中 通知始终在发布通知的线程中传递 该线程可能与观察者注册自身的线程不同 同样重
  • 空间局部性与时间局部性

    我理解这些术语的定义 但我无法将它们的概念应用到代码中 在练习中 我们需要描述以下代码是空间代码还是时间代码 for int i 0 i lt 10 i printf some array i 我觉得这是空间局部性 因为当访问数组的一个索引
  • Spring Boot 2 禁用具有多个数据源的自动提交 Hikari

    我正在尝试关闭 Hikari 上具有多个数据源的自动提交 但我没有任何运气 我正在使用 Spring Boot 2 2 0 3 RELEASE 这是我的配置 应用程序属性 spring datasource primary driver c
  • 如何在 Laravel 中过滤多对多结构

    我有多对多的用户和角色结构 users id name roles id name 角色 用户 user id role id Model User php public function roles return this gt belo
  • jq 是否已安装并在 PATH 上可用?

    我正在尝试读取 gitlab CI 中的 yaml 文件 我安装了jq 1 0 2 and yq 2 10 1 using pip在我的 CI 工作中 我使用 python 3 7 图像 当我尝试读取 yaml 文件时 出现错误 yq Er
  • 如何为 S3 对象创建 java OutputStream 并向其写入值?

    使用 AmazonS3 类中的方法将内容添加到 S3 文件的现有方法有 通过带有输入流的 putObject 创建包含内容的本地文件并将其上传到 S3 有没有办法为现有的 S3 对象创建一个 OutputStream 可以将列表中的值写入其
  • 当 SCREEN_ON 接收器被触发时,如何禁用键盘防护并向用户显示活动?

    当 screen on 激活广播接收器时 如何禁用键盘保护 以便当它发生时用户可以看到我在其后面启动的活动 活动已经开始 我一直在尝试从屏幕关闭触发的广播接收器中执行以下代码 KeyguardManager myKeyGuard Keygu
  • .NET 正则表达式中的 \d 与 [0-9] [重复]

    这个问题在这里已经有答案了 我经常看到 0 9 用于 Stack Overflow 上的 NET 正则表达式答案 而不是 d 我问过为什么 答案往往是 d匹配的不仅仅是 0 9 那么它还匹配什么呢 这张表说它匹配十进制数字 那么呢 p Nd
  • Maven 安装插件:参数文件丢失或无效

    我有一个本地 jar 我想在我的项目中使用它 有很多方法可以做到这一点 只需手动安装到本地存储库中 使用父 pom 中的脚本进行安装 使用系统范围 使用本地存储库声明 我决定使用 Maven Install 插件将 jar 安装到存储库中
  • gcc 编译标志

    谁能解释一下为什么我们在 gcc 中使用 m 标志 我运行 man gcc 命令结果很不清楚 任何人都可以解释一下这个标志在编译中的作用吗 如何使用 m 标记其正确的语法 我需要它 因为我正在通过 make 命令运行自动生成的 makefi
  • Web API ModelBinders - 如何以不同方式绑定对象的一个​​属性

    我有以下操作签名 ValidateInput false public HttpResponseMessage PostParam Param param Param 看起来像这样 public class Param public int
  • 非静态方法 PEAR::isError() 不应静态调用

    从 RHEL 5x 升级到 CentOS 6x 后 我开始在 httpd 日志中看到以下错误 PHP 严格标准 非静态方法 PEAR isError 不应该 在 web sites blah somescript php 第 33 行静态调
  • 为什么 strncpy 被标记为不安全?

    我收到警告 warning C4996 strncpy This function or variable may be unsafe Consider using strncpy s instead To disable deprecat
  • 如何有选择地合并或选择 Git 中另一个分支的更改?

    我正在一个新项目上使用 Git 该项目有两个并行的 但目前是实验性的 开发分支 master 导入现有代码库以及我通常确定的一些修改 exp1 实验分支 1 exp2 实验分支 2 exp1 and exp2代表了两种截然不同的架构方法 在