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

当前回答

如果你是新手,尝试GitHub桌面版本,当你选择选择选项时,GitHub会要求你选择你想要提交的分支。

1)

2)

其他回答

如果你是新手,尝试GitHub桌面版本,当你选择选择选项时,GitHub会要求你选择你想要提交的分支。

1)

2)

Git -pick应该是你的答案。

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

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

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

就变成:

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

这个提交的问题是git认为提交包含了它们之前的所有历史

其中C'有不同的SHA-1 ID。 同样地,从一个分支向另一个分支选择提交基本上涉及生成一个补丁,然后应用它,因此也会丢失历史记录。

这种提交id的改变破坏了git在其他事情之间的合并功能(尽管如果谨慎使用,有一些启发式方法会掩盖这一点)。 更重要的是,它忽略了函数依赖关系——如果C语言真的使用了B语言中定义的函数,你永远不会知道。

您可以使用git自行选择将单个提交应用到当前分支。

例如:git选择d42c389f

如果您已将更改提交给主分支。现在您想要将相同的提交移动到release分支。检查提交id(例如:xyzabc123)。

现在试试下面的命令

git checkout release-branch
git cherry-pick xyzabc123
git push origin release-branch

我们将不得不使用git cherry-pick <commit-number>

场景:我在一个名为发布的分支上,我只想从主分支添加一些更改到发布分支。

步骤1:签出您想要添加更改的分支

Git签出版本

步骤2:获取你想要添加的变更的提交号

例如

git cherry-pick 634af7b56ec

第三步:git push

注意:每次合并都会创建一个单独的提交号。不要为不能工作的合并取提交号。相反,是你想添加的任何常规提交的提交号。