繁体   English   中英

git rebase从不相关的分支中获取变化?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM