(git):如何从上游分支带来特定的提交?

时间:2010-02-16 13:22:45

标签: git branch commit rebase

我有这个(git repo):

A--B--C--D ->master
   \--E    ->dev

我想只将提交D带到分支devD不依赖于C),以便:

A--B--C--D  ->master
   \--E--D' ->dev

但合并后D'不应该被添加到主人身上:

A--B--C--D--E' ->master
   \--E--D'/   ->dev

这是因为我想只带一个文件更新,而不必用dev(代表另一个大合并)添加的新文件污染C
我猜我需要使用git rebase,但我不知道如何。

2 个答案:

答案 0 :(得分:12)

您想使用git cherry-pick。我假设您的遥控器被命名为“origin”(但用“origin”替换远程仓库的真实名称)。我假设您有两个名为masterdev的本地分支。我假设提交D在origin/dev上。您可以通过以下方式挑选D:

$ git fetch origin             # Assuming the upstream remote's name is "origin"
$ git checkout dev             # Check out your local "dev" branch
$ git cherry-pick $COMMIT_D    # Replace "COMMIT_D" with the hash for commit D

现在,您只需在dev中的提交D进行更改。

答案 1 :(得分:0)

使用工作链接

更新git cherry-pick