0

我的分支落后于 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

任何帮助表示赞赏。

4

1 回答 1

1

尝试

git cherry-pick <C-sha>

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

git reset HEAD~1

然后,这些更改既不会暂存,也不会提交。

更新:

如果您希望自己的分支看起来已经合并了 task-68 中的这 5 个提交,而实际上它只有提交 C,您可以编写(在挑选樱桃之后):

git merge -s ours task-68

更新 2:

保持本地task-68分支与 相同是一种常见的做法origin/task-68,因此如果您想省略父分支中的一些提交,最好预先分叉它:

git checkout -b task-68-wip

在此之后,如上所述进行樱桃采摘和合并。

于 2013-01-15T16:06:51.830 回答