git - 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 吗?
我发现这个问题不是我独有的,它被多次质疑,但没有正确的答案。
我期待一个明确的解决方案永远克服这个问题。
解决方案
听起来您的问题是Git FAQ 关于长期运行的分支和壁球合并中描述的问题。常见问题解答非常详细地概述了这背后的原因,但粗略地说,您不能使用 squash 合并和长时间运行的功能分支并期望得到好的结果。您所看到的是尝试这样做的常见结果。
如果你希望你的 PR 分支是最新的,你将不得不重新设置它,或者你将不得不停止将 squash 合并到你的主分支。
推荐阅读
- c - 使用 getchar() 和 putchar() 进行文件复制
- arrays - 结构体数组初始化
- javascript - 使用锚标记在 div 上滚动的 Jquery 无法正常工作
- web-scraping - 当“按钮”输入字段没有名称时如何使用 Python 请求登录
- swift - 迅速。将北向表示为航向方向的范围
- python - 将 PilImage 转换为 reportlab
- laravel - 无法在 Laravel 中更新用户信息
- r - R-选择满足 R 中数百列的特定条件的行
- php - Laravel Eloquent:选择相关表有 x 的位置,但从相关表中排除某些行
- php - 无法让 url mod_rewrite 在 xampp(windows 8)中工作