使用 rebase vs merge 与 master 同步功能
Syncing feature with master using rebase vs merge
根据 Atlassian 的 merge strategy, it is best to merge feature branches 使用 --no-ff
选项返回 master。这在 master 上保留了干净的 git 历史记录,使您可以轻松查看合并中完成的工作。考虑到这一点,当我将 master 合并到我的功能分支时,使用 rebase 还是 merge 有什么关系?
git merge
通常,我会在处理 master 时将其合并到我的功能分支中。这实质上是拍摄 master 的快照并将这些更改放入我的分支。 (注意,我不担心将功能合并回母版,这里的重点是保持功能与母版同步的工作流程)
git rebase
将 master 变基到功能分支中更加清晰,并添加了我在 master 头部顶部的功能分支中所做的更改。
在这种情况下,变基与合并如何影响...
- master 同步到 feature 的过程?
- git 在分支机构工作时的历史?
- git分支与master合并删除后的历史?
使用变基,您正在重写历史,因此您必须强制推送您的功能分支。如果您正在与其他人一起工作,请参阅 (2)。
每次 运行 变基,实际上是在 重写 该分支的历史。如果它是你自己的分支并且没有人与你合作,这并不可怕,但如果多个开发人员为同一个分支做出贡献,它可能会成为问题——特别是因为如果你重写了历史,他们的提交可能不会干净地推送.
Git 没有变基的历史:
* master
|\
| * branch commit 2
|/|
* | simultaneous commit on master
| * branch commit
|/
* previous commit on master
与变基比较:
* master
|\
| * branch commit 3
| * branch commit 2
| * branch commit
|/
* simultaneous commit on master
* previous commit on master
如您所见,当您对分支进行变基时,历史记录可能会稍微简单一些,因此有些人更喜欢它。
一些额外的颜色:当我决定一个rebase是否合适时,我经常想我是否认为分支已经"published"。 "published" 分支是其他开发人员可能已经完成的工作,并且有理由期望不会更改的分支。 "unpublished" 分支是我用来将我的更改组织到一个或多个提交中的分支,并且尚未与其他开发人员共享。这是我的工作草稿。
根据 Atlassian 的 merge strategy, it is best to merge feature branches 使用 --no-ff
选项返回 master。这在 master 上保留了干净的 git 历史记录,使您可以轻松查看合并中完成的工作。考虑到这一点,当我将 master 合并到我的功能分支时,使用 rebase 还是 merge 有什么关系?
git merge
通常,我会在处理 master 时将其合并到我的功能分支中。这实质上是拍摄 master 的快照并将这些更改放入我的分支。 (注意,我不担心将功能合并回母版,这里的重点是保持功能与母版同步的工作流程)
git rebase
将 master 变基到功能分支中更加清晰,并添加了我在 master 头部顶部的功能分支中所做的更改。
在这种情况下,变基与合并如何影响...
- master 同步到 feature 的过程?
- git 在分支机构工作时的历史?
- git分支与master合并删除后的历史?
使用变基,您正在重写历史,因此您必须强制推送您的功能分支。如果您正在与其他人一起工作,请参阅 (2)。
每次 运行 变基,实际上是在 重写 该分支的历史。如果它是你自己的分支并且没有人与你合作,这并不可怕,但如果多个开发人员为同一个分支做出贡献,它可能会成为问题——特别是因为如果你重写了历史,他们的提交可能不会干净地推送.
Git 没有变基的历史:
* master |\ | * branch commit 2 |/| * | simultaneous commit on master | * branch commit |/ * previous commit on master
与变基比较:
* master |\ | * branch commit 3 | * branch commit 2 | * branch commit |/ * simultaneous commit on master * previous commit on master
如您所见,当您对分支进行变基时,历史记录可能会稍微简单一些,因此有些人更喜欢它。
一些额外的颜色:当我决定一个rebase是否合适时,我经常想我是否认为分支已经"published"。 "published" 分支是其他开发人员可能已经完成的工作,并且有理由期望不会更改的分支。 "unpublished" 分支是我用来将我的更改组织到一个或多个提交中的分支,并且尚未与其他开发人员共享。这是我的工作草稿。