【发布时间】:2021-08-28 00:05:52
【问题描述】:
我过去工作过的大多数团队在使用 Git 时都遵循相同的工作流程(有一些微小的变化):
- 拉取
develop分支(git checkout develop) - 创建一个新的功能分支 (
git checkout -b feature/XYZ-123) - 做好你的工作
- 当您准备好创建 PR 时,添加并提交您的更改 (
git add . && git commit -m "some commit message"),然后检查develop退出,拉取它 (git checkout develop && git pull) - 切换回您的功能分支并将
develop合并到其中 (git checkout feature/XYZ-123 && git merge develop) - 最后推送 (
git push -u origin feature/XYZ-123) 并创建 PR
我们将其称为“合并方法”。好处是自从您创建分支以来对develop 的任何更改现在都合并到您的分支中。因此,当您创建 PR 时,与 develop 没有合并冲突,并且代码审查者可以看到您的分支与 develop 之间的干净、无冲突的差异。
我现在正在一个团队工作,该团队在合并步骤之前具有类似的流程,但是他们没有将 develop 合并到我的功能分支中,而是要求从 origin/develop 进行变基。所以实际的步骤是:
git checkout developgit checkout -b feature/XYZ-123- 做好你的工作
git add . && git commit -m "some commit message"git checkout develop && git pullgit checkout feature/XYZ-123- 从
origin/dev变基 git push -u origin feature/XYZ-123
我们将其称为“变基方法”。它也产生了无合并冲突的 PR,但显然它与上面解释的合并方法有不同的优点/缺点。
我想知道这些优点/缺点是什么。 Merge 方法使 Rebase 方法缺乏什么,反之亦然?什么时候应该使用一种方法而不是另一种方法?
【问题讨论】: