我已经从GitHub的存储库中分支了一个分支,并提交了一些特定于我的东西。 现在我发现原始存储库具有HEAD的良好功能。

我只想合并它而无需先前的提交。 我该怎么办? 我知道如何合并所有提交:

git branch -b a-good-feature
git pull repository master
git checkout master
git merge a-good-feature
git commit -a
git push

#1楼

让我们尝试举一个例子来理解:

我有一个分支,例如master ,指向X <commit-id>,还有一个新分支,指向Y <sha1>。

其中Y <commit-id> = <master>分支提交-很少提交

现在说,对于Y分支,我必须关闭master分支和新分支之间的提交。 下面是我们可以遵循的过程:

步骤1:

git checkout -b local origin/new

其中本地是分支名称。 可以给出任何名称。

第2步:

  git merge origin/master --no-ff --stat -v --log=300

将提交从master分支合并到新分支,还创建一个日志消息的合并提交,其中最多包含正在合并的<n>个实际提交中的单行描述。

有关Git合并的更多信息和参数,请参考:

git merge --help

另外,如果您需要合并特定的提交,则可以使用:

git cherry-pick <commit-id>

#2楼

在我的用例中,我们对CI CD也有类似的需求。 我们在开发和主分支中使用了git flow。 开发人员可以自由地直接合并那里的更改以进行开发,也可以通过功能分支的拉取请求进行合并。 但是要掌握,我们只能通过Jenkins以自动化的方式合并来自developer分支的稳定提交。

在这种情况下,摘樱桃不是一个好选择。 但是,我们从commit-id创建一个本地分支,然后将该本地分支合并到master并执行mvn clean verify(我们使用maven)。 如果成功,则使用带有localCheckout = true选项和pushChanges = false的maven发布插件将生产版本工件发布到联系。 最终,当一切都成功时,则将更改推送到源代码。

示例代码段:

如果您手动完成,则假设您处于主状态。 但是在詹金斯上,当您签出仓库时,您将位于默认分支(如果已配置,则为master)。

git pull  // Just to pull any changes.
git branch local-<commitd-id> <commit-id>  // Create a branch from the given commit-id
git merge local-<commit-id>  // Merge that local branch to master.
mvn clean verify   // Verify if the code is build able
mvn <any args> release:clean release:prepare release:perform // Release artifacts
git push origin/master  // Push the local changes performed above to origin.
git push origin <tag>  // Push the tag to origin

这将为您提供完全控制,而无畏合并或冲突地狱。

如果有更好的选择,请随时提出建议。


#3楼

' git cherry-pick '应该是您的答案。

应用现有提交引入的更改。

在这篇文章中,不要忘记阅读bdonlan关于樱桃采摘的答案:
“从分支中拉出所有提交,将指定的提交推到另一个” ,其中:

A-----B------C\\D

变成:

A-----B------C\\D-----C'

提交的问题是git认为提交包含所有历史记录

其中C'具有不同的SHA-1 ID。
同样,樱桃从一个分支到另一个分支挑选一个提交基本上涉及生成补丁,然后应用它,从而也失去了历史记录。

提交ID的这种更改在其他方面破坏了git的合并功能(尽管如果谨慎使用,则会在此基础上进行启发式尝试)。
不过,更重要的是, 它忽略了功能依赖性-如果C实际上使用了B中定义的功能,您将永远不会知道


#4楼

您可以使用git cherry-pick单独将单个提交应用于当前分支。

示例: git cherry-pick d42c389f

如何在Git中合并特定的提交相关推荐

  1. 如何在Git中更改多次提交的作者和提交者名称以及电子邮件?

    我当时正在学校计算机上编写一个简单的脚本,然后将更改提交到Git(在笔驱动器中的一个回购中,该回购是从家里的计算机中克隆的). 经过几次提交后,我意识到我正在以root用户身份提交东西. 有什么办法可 ...

  2. git 还原文件到其他版本_如何在Git中还原旧文件版本

    git 还原文件到其他版本 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分 ...

  3. 如何在 Git 中保存用户名和密码?

    问: 我想在 Git Extensions.Sourcetree 或任何其他 Git GUI 中自动使用推送和拉取功能,而无需每次都在提示中输入我的用户名和密码. 那么如何在 Git 中保存我的凭据呢 ...

  4. 如何在Mercurial中编辑错误的提交消息? [重复]

    本文翻译自:How to edit incorrect commit message in Mercurial? [duplicate] This question already has answe ...

  5. 如何在Git中保存用户名和密码?

    本文翻译自:How to save username and password in Git? I want to use a push and pull automatically in GitEx ...

  6. java 合并两个列表_如何在Java中合并两个列表?

    java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...

  7. java 合并pdf,如何在Java中合并PDF

    如何在Java中合并PDF 为小型企业和大型企业,保持 您的 重要 文件, 组织将提高您的工作流程,并成倍增长你的组织的工作效率. PDF文档由于其接受的输入格式的类型的安全性和灵活性,通常是共享大量 ...

  8. android指定日期闹钟,如何在android中设置特定日期的闹钟?

    嗨我需要使用时间选择器来设置特定日期的闹钟.当我给出静态输入时,闹钟设置不正确并响铃. 例如:我给静态输入(与日期,月份和年份),但它不振铃.这是我的代码.如何在android中设置特定日期的闹钟? ...

  9. git reset 怎么还原_如何在Git中重置、恢复,返回到以前的状态

    编辑推荐: 本文来自51cto,在本文中,我们将带你了解如何去重置.恢复和完全回到以前的状态,做到这些只需要几个简单而优雅的 Git 命令. 用简洁而优雅的 Git 命令撤销仓库中的改变. 使用 Gi ...

最新文章

  1. c++获取当前目录_如何在 Linux 下利用 Vim 搭建 C/C++ 开发环境?
  2. 树莓派:交叉编译,以及带wiringPi库的如何交叉编译
  3. goland远程调试Docker
  4. CentOS 7 上 Docker 安装
  5. Windows Networking 4: CloudMonitor 引发的网络问题排查一则
  6. excel怎么下方方格子_Excel重复值的坑,你踩过几个?
  7. 国内银行卡BIN号速查简表
  8. 文字闪图怎么做?如何制作gif闪图?
  9. 在linux启动docker时,报告XIO: fatal IO error 错误
  10. php属相对应年份博客,十二生肖对应年份表
  11. ubuntu安装以太方mist
  12. 高精度地图2019-2020年或可落地
  13. MySQL 查看连接数及状态信息
  14. python给列表的N个元素赋值-*表达式
  15. servlet和jsp简介
  16. 【在ubantu20.04上安装google chrome】
  17. pip3 install -i sklearn 安装报错
  18. 带中继节点的蜂窝小区通信系统matlab仿真,输出吞吐量,功耗以及能效等
  19. PMSM的发展及研究现状
  20. (16)UVM sequence和item

热门文章

  1. CAD2012安装错误
  2. 《Google C++ 编码规范》小结
  3. 应该怎样设计和开发软件
  4. Centos7安装maven过程
  5. 初学Python01
  6. [C++]二维数组还是一维数组?
  7. 转:把二元查找树转变成排序的双向链表
  8. 用代码实现task列表里面的Assigned To选择多个人
  9. 给图片添加水印效果图的函数(可以在图片上添加自己的版权和LOGO图片的水印) 【转载】...
  10. [3rgb.com开发笔记] 初步设想篇