小编典典

如何在 Git 中合并特定的提交

all

我从 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

阅读 340

收藏
2022-02-25

共1个答案

小编典典

git cherry-pick‘ 应该是你的答案。

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

不要忘记阅读bdonlan在这篇文章中关于cherry pick的后果的回答: “从一个分支中提取所有提交,将指定的提交推送到另一个”,其中:

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

变成:

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

这个提交的问题是 git 认为提交包括他们之前的所有历史

其中 C’ 具有不同的SHA-1ID。
同样,cherry 从一个分支到另一个分支的提交基本上涉及生成一个补丁,然后应用它,因此也会以这种方式丢失历史记录。

这种提交 ID 的更改破坏了 git 的合并功能(尽管如果谨慎使用,会有一些启发式方法可以解决这个问题)。
更重要的是, 它忽略了函数依赖——如果 C 真的使用了 B 中定义的函数,你永远不会知道.

2022-02-25