在git中重新定位功能分支后合并

时间:2015-10-14 11:13:02

标签: git merge rebase

我将origin / develop上的特征分支重新设置为当前开发状态​​的当前状态。

git checkout feature-X
git rebase origin/develop

但是当我这样做时,我必须立即合并。这让事情变得混乱。

我认为变基的整个想法是你可以重写历史(假装我们正在处理起源/开发的尖端),只有当你想要将你的变化整合到origin / develop时才必须合并。

我做错了吗?

更新:如果没有更多git magic,我无法完全重现我所做的事情,但我正在尝试拼凑一个功能正常的功能分支模型,主要是this gist。< / p>

当我进入我的功能分支时,我“git rebase origin / develop”。这完成但后来告诉我,我已经大大偏离了我尝试通过推/拉来修复的东西。这创造了我认为我不想要的合并。

2 个答案:

答案 0 :(得分:10)

假设feature-X已经分支develop,更好的方法是将更改从远程拉到您的本地develop分支,然后从feature-X重新定位develop当地分公司。这将避免合并提交。您可以稍后将功能-X合并到本地git push -f origin feature-x ,然后将其推送。

如果feature-X被推到了遥控器上,正如@ crea1已经回答的那样,你必须使用开发的每个rebase来运行它

.parallax > div .txparallax {
    width: 100%;
    padding-right: 150px;
    display: inline-block;
    position: relative;
    left:0px;
}

.parallax > div .txparallax:hover{
    left:400px;
    -moz-transition: 0.5s all ease;
    -o-transition: 0.5s all ease;
    -webkit-transition: 0.5s all ease;
    transition: 0.5s all ease;
}

原因是rebase为重新提交的提交创建了全新的提交ID。就git而言,它们是新的提交。这就是导致你的git pull进行合并提交的原因。只要没有人使用它,推力应该没问题。 另外恕我直言,如果你的gitconfig中你的pull.rebase设置为true会更好。

答案 1 :(得分:2)

如果您在origin / develop之上修改feature-x,则可以在本地仓库中执行此操作。这意味着feature-x仍然处于远程存储库中的rebase之前的状态。由于他们不再拥有相同的祖先,git会尝试合并。

要更新远程分支,您可以执行强制推送。

git push origin feature-x --force

但要注意,如果除了你以外的其他人feature-x,并且开始推/拉它可能会变得混乱。

我发现此链接对于了解merging vs rebasing

非常有用