在 git 中重新设置功能分支后合并
Merge after rebasing feature branch in git
我将我的功能分支重新设置为 origin/develop 以适应当前的开发状态。
git checkout feature-X
git rebase origin/develop
但是当我这样做时,我必须在之后立即合并。这让事情变得混乱。
我认为变基的整个想法是你可以重写历史(假装我们正在研究 origin/develop 的尖端)并且只有当你想将你的更改集成到 origin/develop.
我是不是做错了什么?
更新: 如果没有更多 git 魔术,我无法完全重现我所做的事情,但我主要是在尝试拼凑一个功能性分支模型出发 this gist.
我 "git rebase origin/develop" 当我在我的功能分支中时。这完成了,但随后告诉我我已经与我尝试通过 push/pull 修复的东西大相径庭。这创建了一个我认为我不想要的合并。
如果您在 origin/develop 之上变基 feature-x,您可以在本地存储库中执行此操作。这意味着 feature-x
在远程存储库中仍处于变基之前的状态。由于它们不再具有相同的祖先,git 将尝试合并。
要更新远程分支,您可以强制推送。
git push origin feature-x --force
但请注意,如果其他人正在 feature-x
上工作并开始 pushing/pulling,它可能会变得混乱。
我发现这个 link 对于学习 merging vs rebasing
很有用
假设 feature-X
已从 develop
分支出来,更好的方法是将更改从远程拉到本地 develop
分支并重新设置 feature-X
从本地分支机构。这将避免合并提交。您可以稍后将 feature-X 合并到本地 develop
然后推送它。
如果 feature-X 已被推送到遥控器上,正如@crea1 已回答的那样,您将必须 运行 在 develop
的每个 rebase 中执行此操作
git push -f origin feature-x
原因是变基为变基的提交创建了全新的提交 ID。就 git 而言,它们是新提交。这就是导致您的 git 拉动进行合并提交的原因。只要没人用,强推应该没问题。
另外恕我直言,最好在 git 配置中将 pull.rebase 设置为 true。
我将我的功能分支重新设置为 origin/develop 以适应当前的开发状态。
git checkout feature-X
git rebase origin/develop
但是当我这样做时,我必须在之后立即合并。这让事情变得混乱。
我认为变基的整个想法是你可以重写历史(假装我们正在研究 origin/develop 的尖端)并且只有当你想将你的更改集成到 origin/develop.
我是不是做错了什么?
更新: 如果没有更多 git 魔术,我无法完全重现我所做的事情,但我主要是在尝试拼凑一个功能性分支模型出发 this gist.
我 "git rebase origin/develop" 当我在我的功能分支中时。这完成了,但随后告诉我我已经与我尝试通过 push/pull 修复的东西大相径庭。这创建了一个我认为我不想要的合并。
如果您在 origin/develop 之上变基 feature-x,您可以在本地存储库中执行此操作。这意味着 feature-x
在远程存储库中仍处于变基之前的状态。由于它们不再具有相同的祖先,git 将尝试合并。
要更新远程分支,您可以强制推送。
git push origin feature-x --force
但请注意,如果其他人正在 feature-x
上工作并开始 pushing/pulling,它可能会变得混乱。
我发现这个 link 对于学习 merging vs rebasing
很有用假设 feature-X
已从 develop
分支出来,更好的方法是将更改从远程拉到本地 develop
分支并重新设置 feature-X
从本地分支机构。这将避免合并提交。您可以稍后将 feature-X 合并到本地 develop
然后推送它。
如果 feature-X 已被推送到遥控器上,正如@crea1 已回答的那样,您将必须 运行 在 develop
的每个 rebase 中执行此操作git push -f origin feature-x
原因是变基为变基的提交创建了全新的提交 ID。就 git 而言,它们是新提交。这就是导致您的 git 拉动进行合并提交的原因。只要没人用,强推应该没问题。 另外恕我直言,最好在 git 配置中将 pull.rebase 设置为 true。