当前位置: 首页 > 知识库问答 >
问题:

git 使用 cherry-pick 之后再进行合并,出现重复的 commit,有什么替代的方法吗?

严琨
2023-11-08

具体到操作和描述可以参考这个文章
http://www.360doc.com/content/22/0417/14/532901_1026935422.shtml

所以我要如何才能避免这个问题,同时能达到这个效果呢?

使用场景

  • 已经上线的分支A
  • 新版本开发分支B
  • 分支A上依旧会进行线上bug或者紧急需求的提交

因为分支A除了线上bug或者紧急需求的提交,其他的代码都是落后于分支B的

如果我使用 merge 或者 rebase 又容易出现大量的冲突

所以我采用了 cherry-pick 来实现,但是又容易显示重复提交的问题

所以开发分支B的时候,采取什么方式将线上分支A部分提交合并到分支B,是最好的方式呢?

共有3个答案

通和裕
2023-11-08

强行同步分支就行了。用reset --hard同步分支之后push -f同步远程仓库,你只能这么做,也是我们一直的做法。

公西姚石
2023-11-08

使用 rebase

  • github - Git cherry pick creates duplicate commits - Stack Overflow
  • git merge after git cherry-pick: avoiding duplicate commits – davitenio's blag
窦志新
2023-11-08

很遗憾,根据您提供的信息,避免使用 git cherry-pick 后再进行合并可能导致重复提交的最佳方法并不明确。

在 Git 中,cherry-pick 命令用于选择某个提交进行应用,而不是将整个分支的内容合并到当前分支。这可能会导致在合并过程中出现重复的提交,特别是当您已经从目标分支中拉取了这些提交的情况下。

在操作上,您可能需要进行以下步骤以避免出现重复提交:

  1. 确保您的本地仓库是最新的,以避免在合并过程中出现冲突。
  2. 在合并之前,使用 git fetch 命令更新您的本地仓库,以确保您拥有最新的提交信息。
  3. 使用 git merge 命令而不是 git cherry-pick 来将目标分支的内容合并到当前分支。这将确保您的合并操作不会产生重复提交。
  4. 如果您的目标分支已经包含您刚刚 cherry-pick 的提交,那么您可能需要使用 git revert 命令来创建一个新的提交,以撤销该提交并恢复您的更改。
  5. 最后,使用 git push 命令将您的更改推送到远程仓库。

请注意,这些步骤可能会根据您的具体需求和情况而有所不同。如果您需要更详细的指导或帮助,请提供更多关于您的项目结构和提交历史的信息。

 类似资料:
  • 命名 git-cherry-pick - 应用一些现有提交引入的更改 概要 git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>… git cherry-pick --continuegit cherry-pick --quit git ch

  • 有人遇到这种场景吗 revert的分支无法再次merge进去 就是你有featureA分支 要合到主分支 结果遇到一些情况 比如当天不能发布 所以又把featureA分支revert了出来 过了几天允许发布了 再把featureA合进主分支 发现没有任何diff和commit 就是git识别不出你在featureA上做的改动了

  • 为了节省时间,这个教程使用现有的历史记录作为本地数据库。 从这里下载 我们进入stepup-tutorial/tutorial4目录。本地端历史记录的状态如下图显示。仅把在其他分支执行的「添加commit的讲解」的修改导入到master分支。 把修改移动到master分支后,用cherry-pick 取出「添加commit的讲解」提交,然后将其添加到master。(文档里的提交"99daed2"和

  • 我怎样才能缩短这个,而不是用一打或的

  • 我对下面的程序有一个问题 请看下面的程序 我所期望的是,一旦我运行这个程序,我会认为putput是最好的,但令我惊讶的是,输出是测试。 谁能告诉我,为什么会这样?? 提前感谢。

  • 我在GitLab上有以下提交: 我想删除第三次和第四次提交,因此我认为第一次通过以下方式恢复到第二次提交: 然后从第5次提交开始应用樱桃采摘: 1.上述方法通过删除第3次和第4次提交来获得最后一次提交是否正确? 2.对于这种情况,有没有更好的方法?