我从 GitHub 的存储库中创建了一个分支,并提交了一些特定于我的东西。现在我发现原始存储库有一个很好的特性,它位于HEAD.
HEAD
我只想在没有以前提交的情况下合并它。我该怎么办?我知道如何合并所有提交:
git branch -b a-good-feature git pull repository master git checkout master git merge a-good-feature git commit -a git push
‘ git cherry-pick‘ 应该是你的答案。
git cherry-pick
应用现有提交引入的更改。
不要忘记阅读bdonlan在这篇文章中关于cherry pick的后果的回答: “从一个分支中提取所有提交,将指定的提交推送到另一个”,其中:
A-----B------C \ \ D
变成:
A-----B------C \ \ D-----C'
这个提交的问题是 git 认为提交包括他们之前的所有历史 其中 C’ 具有不同的SHA-1ID。 同样,cherry 从一个分支到另一个分支的提交基本上涉及生成一个补丁,然后应用它,因此也会以这种方式丢失历史记录。 这种提交 ID 的更改破坏了 git 的合并功能(尽管如果谨慎使用,会有一些启发式方法可以解决这个问题)。 更重要的是, 它忽略了函数依赖——如果 C 真的使用了 B 中定义的函数,你永远不会知道.
这个提交的问题是 git 认为提交包括他们之前的所有历史
其中 C’ 具有不同的SHA-1ID。 同样,cherry 从一个分支到另一个分支的提交基本上涉及生成一个补丁,然后应用它,因此也会以这种方式丢失历史记录。
SHA-1
这种提交 ID 的更改破坏了 git 的合并功能(尽管如果谨慎使用,会有一些启发式方法可以解决这个问题)。 更重要的是, 它忽略了函数依赖——如果 C 真的使用了 B 中定义的函数,你永远不会知道.