如何对远程跟踪的分支进行变基?

问题描述 投票:0回答:1

我们有一个开发分支,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 中修改的文件发生“冲突”,而我从未在功能分支中接触过这些文件。

所以,我的问题是:

  1. 如果我按照 git status 的建议拉取,会发生什么? 看起来我们现在有两个不同的历史,我可能会陷入混乱。
  2. 有没有更好的方法来处理这个问题?放弃变基并只使用合并,即使我是唯一使用该分支的人?或者在每次变基后创建一个新的功能分支(f1.1 f1.2,...),并且在后续变基后永远不会推送功能分支?还有别的吗?

提前谢谢您。

git rebase
1个回答
0
投票

放弃变基并仅使用合并

是的,就是这样。拥有一个长期存在的功能分支并不是一个好主意,但是如果您必须这样做并且您有某种原因需要跟上开发分支,那么这样做的方法就是合并开发分支进入你的功能分支(我称之为“反向合并”)。

© www.soinside.com 2019 - 2024. All rights reserved.