Git Rebase 已经合并的分支

Git Rebase already merged branch

我从名为 my-feature 的主 develop 分支创建了功能分支,还有另一个开发人员创建的另一个功能分支 another-feature

我们都在不同的文件中进行更改

另一位开发人员已经创建了 PR,但尚未合并到 develop。但是,我需要他对我的分支进行更改,所以我对 my-feature 分支做了 git merge another-feature 并创建了 Pull 请求。

但是,现在的主要问题是,我可以看到 another-feature 分支对 my-feature 的 Pull 请求的更改。那么,我怎样才能改变它呢?我不想显示另一个分支的更改。

我检查了另一个 post 但是,其中一些我不太理解。

如有任何帮助,我们将不胜感激。

编辑:

git log 显示如下。 (目标分支是develop

commit: f0fdfddsdsde
Author: Me (As my last commit before creating PR)
Date: blah blah

commit message....


commit: a4dsdsdssdds
Author: Another developer (whose changes I merged)
Date: blah blah

commit message....

rest of another commits ....

git日志--全部--装饰--联机--图表

f0acaed (HEAD -> feature/my-feature, origin/my-feature) commit message..
a4f4dab (origin/another-feature, feature/another-feature) commit message..
* db30503 (origin/HEAD, origin/develop, develop) merge pull request from another branch

blah blah blah

除非合并 another-feature,否则更改将在您的 PR 中可见。
如果您只是不想在审查时在您的 PR 中看到这些更改,只需在审查期间更改基本分支(如果您使用的版本控制系统允许这样做)。

另一种解决方案(我更喜欢)是重新设置你的分支 与 another-feature 而不是合并它们。
在这种情况下,当另一个特性被合并时你不会那么头疼,而且在审查时你将能够只审查你推送的提交(大多数系统允许你 select审查时的提交数)。

更新:(针对上述第二种方法)
为了跳转到 my-feature 的原始状态,您需要使用 reflog.
下面是如何做到这一点。

  1. 通过键入确保没有未决的更改 git status
  2. 类型 git reflog 你会看到这样的东西: 在那里你可以看到 head 引用的历史。只需找到合并之前的提交(在图片中它是带有 HEAD@{1} 和提交哈希 e919ec6 的提交)。
  3. 现在只需使用以下命令检出该提交: git checkout HASH_HERE(例如 git checkout e919ec6
  4. 现在只需从该提交创建一个分支(为了方便) checkout -b my-feature.ORIGINAL

现在 my-feature.ORIGINAL 包含合并前的分支状态,并且您在那个分支上。
为了进行变基而不是合并,请按照下列步骤操作:

  1. 备份你的分支(同样只是为了方便) git branch my-feature.BKP
  2. 使用另一个功能重新设置分支 git rebase another-feature
  3. 重命名旧的坏分支(为了方便) git rename my-feature my-feature.BAD
  4. 将您当前的分支名称从 my-feature.ORIGINAL 更改为 my-feature(以匹配远程分支名称) git rename my-feature.ORIGINAL my-feature
  5. 现在您可以强制将您的分支推送到您的远程分支,PR 将被更新。