Git 场景不同步,我的提交介于两者之间?

Git out of sync scenario, with my commit left in between?

所以这是一个特殊的场景,我遇到过很多次,但一直无法从中找出可行的工作流程。

场景 我有一个远程 git 分支,回购有一些维护者。我有 repo 的本地克隆,我和维护者一次在同一个分支上工作。远程和本地都同步。现在维护者要我添加一个特性。我进行了某些更改并分支到另一个分支提交,推送并创建一个 pr 到主分支。但与此同时,维护者已经对主分支做出了某些承诺。

所以我从功能分支制作的 pr 在提交历史方面是不同步的,因为在主分支后面有一些提交。

为了让它们同步并且在 pr 中只有一个提交,我做了一个手动过程,从原点移回主分支,创建一个名为 feature2 的新分支,并进行相同的更改,我之前做过在我的功能分支到 feature2 并再次从 feature2 到主分支创建一个新的 pr 并删除初始功能分支及其 pr.

这似乎是一种错误的方式,它也耗费了大量时间。解决此类情况的正确方法和流程是什么?

您必须将主(主要)分支合并到您的功能分支中才能同步。

  1. 拉主分支
  2. 检查你的功能分支
  3. 将 master 分支合并到你的功能分支中

这是一个很好的要点,其中包含必需的 git 命令。 https://gist.github.com/santisbon/a1a60db1fb8eecd1beeacd986ae5d3ca

这样,它会将您的分支与最新更改同步。

您可以使用

git fetch <remote_repo>
git rebase <remote_repo>/master topic

在发出第二个拉取请求之前。

因此,您手动进行的操作已经在 git 中通过 rebase 操作自动执行。

来自 git manual

      A---B---C topic
     /
D---E---F---G master

From this point, the result of either of the following commands:

git rebase master

git rebase master topic

would be:

              A'--B'--C' topic
             /
D---E---F---G master