在比较分支时,有没有办法在GitHub中"隐藏"合并提交?

ste*_*hom 7 git github

我的10人左右的团队正在使用GitHub进行开发项目.我们有一个主develop分支,我们从中创建功能分支来完成我们的开发任务,然后我们将功能分支合并回来develop.我们使用Pull Requests进行代码审查.所有标准的东西.

然而,有一件事困扰着我.

假设开发人员A创建名为的功能分支myFeature.比如说,在这个分支中,他对单个文件进行了一行更改Loop.java.

与此同时,develop其他开发人员将100个不相关的提交合并到其他分支.

现在,在开发人员A推动他的更改并发出拉取请求之前,他希望确保他的更改与最新的develop分支一起工作.因此,他将HEAD合并develop到他的分支中:

git checkout develop
git pull
git checkout myFeature
git merge develop
# testing and stuff
git push origin myFeature
Run Code Online (Sandbox Code Playgroud)

最后一个命令(git merge develop)总是会导致新的提交.因此,当开发人员A推送他的更改并发出Pull Request for时myFeature,Pull Request 的审阅者将看到101个提交添加到分支myFeature:一个更改为Loop.java,另一个100不相关,并且实际上已经合并develop.在这里,它们只是作为噪声来掩盖开发者在这个分支中真正改变的东西.

有没有一种简单的方法让审阅者能够通过开发人员的A更改来判断改变了什么,并以某种方式"隐藏"来自合并的提交develop我特别考虑了Pull Request视图中的"Files Changed"选项卡.(我意识到我可以使用"提交"选项卡,逐个执行所有提交以查看更改内容,但如果有很多提交,这可能会很烦人.我喜欢单数,最后的"文件已更改"标签.)

编辑:git rebase develop已被提议作为一种选择,但我不认为它适合我们的目的.通常情况下,多个开发人员都会继续努力myFeature,因此自从重写历史记录以来,rebase可能会让所有人陷入困境.

编辑2:正如@kan在下面指出的那样,GitHub实际上表现得很好:是的,它会在Pull Request的"Commits"选项卡中显示合并提交(这很好),但是在"Files Changed"选项卡下,仅列出此功能分支上更改的文件(而不是合并中的文件).这正是我正在寻找的.

Sch*_*eis 6

一种方法是,而不是做git mergegit rebase develop.这不会导致合并提交发生,并将新提交放在develop中新提交的末尾.

然后,历史记录应仅显示在pull请求中更改的一个新提交.IMO这也使历史保持线性,更容易遵循.

  • 从我读过的内容(包括下面的@kan)来看,如果功能分支已被推送到远程服务器,那么`git rebase`并不是一个好主意,因为其他开发人员可能也已经撤出了分支.真的吗?此外,rebase如何处理合并冲突? (2认同)