如何在git中分别推送两个提交

时间:2014-01-29 19:31:20

标签: git

我想通过分支1和分支2进行两次独立更改。但是,在通过分支1提交更改后,我直接使用了'git checkout -b branch 2'。从而包括从分支1到分支2的提交。我确实有一个与我想要提交的分支2相关的提交,但是我想忽略分支1的提交。这是怎么做的?

2 个答案:

答案 0 :(得分:1)

你可以做一个互动的rebase。

如果A是公共分支而B1和B2是分支,那么如果你是B1则从B2 git rebase -i A

然后您可以选择删除B1提交。

A ---B1
      \
       \
        B2

从B2到A的交互式变基将提示像

这样的编辑器
pick COMMIT_FROM_B2 message
pick COMMIT_FROM_B2 message
pick COMMIT_FROM_B2 message
pick COMMIT_FROM_B1 message
pick COMMIT_FROM_B1 message
pick COMMIT_FROM_B1 message
pick COMMIT_FROM_A  message

通过删除B1行,您可以完成目标并仅保留B2提交。

答案 1 :(得分:0)

git checkout -b branch2等同于git checkout -b branch2 HEAD,即使用当前提交作为分支的起点。如果您对此不满意,只需将HEAD替换为您想要启动分支的任何提交。要从branch1的tip的父提交启动branch2(即跳过branch1上的最新提交),请运行git checkout -b branch2 branch1~

在您的情况下,如果您想在事后纠正事情,可以删除branch2并从正确的起点重新创建它。这当然假设您没有向分支机构提交任何内容。您可以使用git reset --hard branch1~强制更改分支指针的位置(假设branch2已签出),而不是删除和重新创建分支。