为了账号安全,请及时绑定邮箱和手机立即绑定

如何合并Git中的特定提交

如何合并Git中的特定提交

Git
牧羊人nacy 2019-06-18 10:12:35
如何合并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
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

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

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

别忘了读书布伦兰关于在这篇文章中摘樱桃的后果的回答:
将所有提交从一个分支中拉出,将指定提交推到另一个分支,其中:

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

变成:

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

此提交的问题在于git认为提交包含它们之前的所有历史记录。

其中C‘有一个不同的SHA-1身份证。
同样,樱桃从一个分支选择一个提交到另一个分支基本上包括生成一个补丁,然后应用它,这样也就失去了历史。

提交ID的这种变化破坏了git的合并功能和其他功能(不过,如果使用得少,就会有一些启发来解决这个问题)。
更重要的是,它忽略函数依赖-如果C实际上使用了B中定义的函数,您将永远不会知道.


查看完整回答
反对 回复 2019-06-18
?
温温酱

TA贡献1752条经验 获得超4个赞

您可以使用giterry-select将单个提交单独应用到当前分支。

例子:git cherry-pick d42c389f


查看完整回答
反对 回复 2019-06-18
?
侃侃无极

TA贡献2051条经验 获得超10个赞

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

我有一根树枝,比如说师父,指向X<COMMIT-id>,并且有一个指向Y<SHA 1>的新分支。

哪里Y<COMMIT-id>=<master>分支提交-很少提交

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

步骤1:

git checkout -b local origin/new

其中本地是分支名称。任何名字都可以。

步骤2:

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

将提交从主分支合并到新分支,并创建日志消息的合并提交,其中包含最多来自正在合并的实际提交的一行描述。

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

git merge --help

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

git cherry-pick <commit-id>


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 1794 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信