首页 > 解决方案 > GitHub PR 显示来自其他开发人员的大量不必要的提交

问题描述

我知道 StackOverflow 中已经有类似的问题,但是经过大量的搜索和挣扎,我不得不问这个问题。

我们在 GitHub 上有一个主分支,其他开发人员创建功能分支来开发他们的功能。一旦开发了该功能,他们就会通过 PR 请求合并并压缩它。这是正常的工作流程和预期的工作。

现在,当我创建 PR 请求(例如 feature1 )以掌握然后在文件更改时有时会出现问题,它显示了许多我没有触及的其他文件。我假设这是因为 feature1 与 master 相比是过去的。通常,如果这样做,通过命令合并

git checkout master
git pull
git checkout feature1
git rebase master
git push --force-with-lease 

之后 PR 中不必要的更改消失了。---> 这行得通

但是,如果我用不同的方式(git pull)做同样的事情,那么这些必要的文件更改就不会发生。我运行了以下命令

git pull origin master

只是为了再次确认,我再次运行了这个命令,它显示下面的响应

 * branch                  master     -> FETCH_HEAD
Already up to date.

之后我做 git push

git push

在 PR 中,我可以看到最后一次成功提交为https://github.com/.......reponame的合并分支“master”

但是,我仍然可以在“文件更改”选项卡中看到很多更改。我的期望是由于更改已经从 master 合并,不必要的文件应该消失或者我的理解是错误的?

编辑:由于我无法重现这一点,我正在寻找从长期运行的功能分支创建拉取请求的最首选方法,因此我不会遇到这样的情况。git pull 似乎不是最好的方法,所以我总是需要去 git rebase 吗?

我发现这个问题不是我独有的,它被多次质疑,但没有正确的答案。

我期待一个明确的解决方案永远克服这个问题。

标签: gitgithubpull-request

解决方案


听起来您的问题是Git FAQ 关于长期运行的分支和壁球合并中描述的问题。常见问题解答非常详细地概述了这背后的原因,但粗略地说,您不能使用 squash 合并和长时间运行的功能分支并期望得到好的结果。您所看到的是尝试这样做的常见结果。

如果你希望你的 PR 分支是最新的,你将不得不重新设置它,或者你将不得不停止将 squash 合并到你的主分支。


推荐阅读