我经常在拉取请求中看到这种情况,有人不小心将一堆重新调整的提交推送到他们的 PR 中,然后在“提交”选项卡中,有一长串已经在 master 上的所有现有提交。
我记得当我还是一个 git 新手时,我遇到了这个问题,并且搞乱了 rebase(我不认为合并时存在这个问题),但我不记得是什么导致了这个问题。有谁知道我指的是什么吗?
我有时也会看到这种情况,以下是一些常见原因:
develop
)分支出来,并在另一个共享分支(例如 master
或 release
)中创建 PR 并创建 PR 时,该 PR 的初始视图通常会变为显示的提交远远多于应有的提交。如果他们随后尝试通过变基来解决此问题(可能使用 rebase --onto
,结果很糟糕),他们可能会意外地重写其分支上已经位于共享分支上的许多提交。master
进行更新时,您可以选择将功能分支重新设置为最新版本的 master
。但是,如果您不小心将 master
的本地副本重新设置为 feature
分支,您将重写错误的分支,并且某些 UI 工具可以轻松单击此选项。此时,确实需要执行额外的步骤来将这些提交放入功能分支,但不知何故,新手也往往会意外地执行此操作,可能是通过将该分支合并到其功能分支中,或者然后转身并将其功能分支重新设置为基础新重写了master
。git rebase HEAD~10
来重写其分支上的最后 10 次提交。通常,第 11 次提交是合并提交,从创建分支时完成的最后一个 PR 到 master
。因此,如果您不小心返回 1 提交到较远的位置,例如git rebase HEAD~11
,那么您最终将重新调整 10 个提交以及由第 11 个合并提交引入的 master
上的所有提交。然后所有这些提交也会显示在 PR 中。有助于防止这种情况的可能提示:
master
origin/master
。这几乎消除了#2 的可能性,并且还减少了由于人们意外地基于 master
的旧本地副本创建新作品而导致的冲突。