我们有一个开发分支,dev1。从这里开始,我创建一个功能分支 f1 并推送到我们的 git 服务器:
git checkout -b f1
git push -u origin f1
我做了一些更改,提交它们并将它们推送到分支。
git commit -m "Some changes"
git push
我这样做了好几次,后来我想用 rebase 赶上 dev1:
git rebase origin/dev1
解决了一些冲突并提交后,
git status
给出了类似的内容:
On branch f1
Your branch and 'origin/f1' have diverged,
and have 97 and 75 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
经过一些研究,似乎
git status
表明远程有自己不同的提交的事实是 because 的变基(即:我应该预料到这一点)。 git 文档建议使用 --force-with-lease,但我们不允许在我们的服务器上这样做(denyNonFastforwards = true),而且我不知道我们想要这样做。
在这种情况下,远程分支实际上只是用作备份,因为我是唯一从事此特定功能的开发人员,但我们希望支持多个开发人员在功能分支上工作,无论如何,我们确实希望功能分支在我们的 git 服务器中有效备份——特别是对于需要一些时间才能实现的大型功能。过去,我只是简单地使用了合并,但有时会看到奇怪的行为,例如与在 dev1 中修改的文件发生“冲突”,而我从未在功能分支中接触过这些文件。
所以,我的问题是:
提前谢谢您。
放弃变基并仅使用合并
是的,就是这样。拥有一个长期存在的功能分支并不是一个好主意,但是如果您必须这样做并且您有某种原因需要跟上开发分支,那么这样做的方法就是合并开发分支进入你的功能分支(我称之为“反向合并”)。