如何在git rebase中提取特定的提交

时间:2013-01-15 15:59:35

标签: git git-rebase

我的分支落后于5个提交。

muralish@vnc9[~/git/task](task-68↓3| ✓)$git status
# On branch task-68
# Your branch is behind 'origin/task-68' by 5 commits, and can be fast-forwarded.
#
nothing to commit, working directory clean
muralish@vnc9[~/git/task](desflow-68↓3| ✓)$

这些提交是A-> B-> C - > D - > E。如何只将与提交C相关的更改提供给工作目录。

它尝试了git rebase -i但根本不会列出该提交。它输出以下信息。

   noop

   # Rebase 484a22b..b7fa802 onto 484a22b
   #
   # Commands:
   #  p, pick = use commit
   #  r, reword = use commit, but edit the commit message
   #  e, edit = use commit, but stop f

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试

git cherry-pick <C-sha>

如果您不希望将这些更改存储为新的提交,请使用

git reset HEAD~1

这些变化既不会上演也不会被提交。

<强>更新

如果你想让你自己的分支出现来合并那些来自task-68的5次提交,而实际上它只能提交C你可以写(樱桃之后) -picking):

git merge -s ours task-68

<强>更新-2:

通常的做法是让本地task-68分支与origin/task-68相同,所以如果你想省略父分支的一些提交,最好先预先分叉:< / p>

git checkout -b task-68-wip

在此之后,按照上述说明进行挑选和合并。