[英]git rebase pulls in changes from unrelated branch?
我是一个新手,所以不要笑得太厉害......
我在分支A上做了一些工作并做了一些提交。 然后,不得不进行修补程序更改,所以我创建了分支B并更改了一些文件。 然后,因为主人没有改变我认为如果我这样做会更简单和更清楚:
git rebase master
git checkout master
git merge B
但是,这应用了分支A的变化。我不理解什么? 这不可能是它应该工作的方式,是吗?
当您创建分支B
,您在分支A
,因此分支B
的基础包含您在分支A
中执行的所有工作。 这就是为什么那些分支A
变化现在是master
。 从图形上看,您有以下情况:
branchA: A -- B -- C
branchB: A -- B -- C -- D
在master
制作修补程序的正确策略是从master
创建一个分支:
# assuming you start on branch B
git checkout master
git checkout -b master_hotfix
# make the fix
git commit -m 'made the hotfix'
git checkout master
git merge master_hotfix
# carry on as you were
git checkout branchB
要撤消已完成的操作,可以尝试在发生错误合并之前将master
分支重置为提交。 输入git log
并计算与branchB
合并后提交的提交branchB
。 然后输入:
git reset --hard HEAD~N
其中N
是您希望从master
删除的提交数。 然后应用我上面给出的步骤正确地创建此修补程序。 请注意,如果您已将本地master
服务器推送到远程服务器,则不应使用git reset
。 在这种情况下,您可以尝试使用git revert
,但是将master
保持branchB
可能是有意义的,并且只有在您完成工作后再次合并branchB
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.