如何合并Git中的特定提交

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

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

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

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

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

变为:

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

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

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

提交ID的这种改变会破坏git的合并功能(尽管如果使用的话会有启发式方法,但会对此进行讨论)。
更重要的是, 它忽略了函数依赖关系 - 如果C实际使用了B中定义的函数,那么您永远不会知道


你可以使用git cherry-pick将自己单独提交到你当前的分支。

例如: git cherry-pick d42c389f


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

我有一个分支,比如master ,指向X <commit-id>,并且我有一个指向Y <sha1>的新分支。

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

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

步骤1:

git checkout -b local origin/new

其中local是分支名称。 任何名字都可以给出。

第2步:

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

合并从主分支到新分支的提交,并创建合并提交日志消息,最多只有<n>实际提交被合并。

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

git merge --help

另外如果你需要合并一个特定的提交,那么你可以使用:

git cherry-pick <commit-id>
链接地址: http://www.djcxy.com/p/8225.html

上一篇: How to merge a specific commit in Git

下一篇: Linux piping ( convert