我想通过分支1和分支2进行两次独立更改。但是,在通过分支1提交更改后,我直接使用了'git checkout -b branch 2'。从而包括从分支1到分支2的提交。我确实有一个与我想要提交的分支2相关的提交,但是我想忽略分支1的提交。这是怎么做的?
答案 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已签出),而不是删除和重新创建分支。