保持功能分支最新
Keeping feature branch up to date
最近我们开始在我们的项目中使用 Gitflow,我们遇到了一些我们无法解决的问题。
我们有 master
、develop
、feature/xyz
和 hotfix
分支的默认设置。因此,假设我正在开发一项长期功能,我们称其为 feature/long-time
。与此同时,我的同事们正在处理 feature/short-time
。想象一下,在一些工作之后,他们将 feature/short-time
提交到 develop
,而我偶尔会提交 feature/long-term
,这样他们就可以看到我的进度并安全备份。
当然,feature/long-term
不能忽视develop
分支太久,否则会落后。那么如何才能周期性地将develop
分支的修改同步到feature/long-term
分支呢?
我遇到过两种选择:
- 只是偶尔做
git merge
。但是,根据 Gitflow 的理念,我觉得这并不正确
- 我现在也看过
git rebase
几次,但是这似乎只有在您不将更改推送到远程分支时才有效,对吗?
总结:如何正确地使我的功能分支保持最新?
这又带回了合并与变基的讨论,这个讨论已经被多次解决了。长话短说,可以查here.
正如您正确所说的那样,如果您要推动您的分支机构,那么变基是不好的,因为更改您的 git 历史记录会使您强制推动,这对日常工作不利,但总的来说变基是 "cleaner" 而不是合并,所以:
- 如果您不得不 经常推送您的分支,无论出于何种原因(代码审查、CI 构建分支等),您最好的选择是
merge
。
- 如果您能够以独立的方式完全工作,避免频繁推送更改,可能
rebase
是更好的选择。
如果你的任务很长,即使 rebase 是你的主要策略,不时合并也是一个好主意,因为:
1.您的修改会不时备份到远程仓库中。
2. rebase 大量提交是不切实际的,因为差异是逐个提交计算的,而在合并中它是同时为所有提交计算的。这意味着对于大量提交,您可能需要解决不必要的大量冲突,这些冲突可以通过合并减少到每个文件一个。
总而言之,我建议大部分时间重新设置基准以保持干净的存储库,但不时合并以在存储库中保留分支的备份并点亮未来的重新设置基准。
最近我们开始在我们的项目中使用 Gitflow,我们遇到了一些我们无法解决的问题。
我们有 master
、develop
、feature/xyz
和 hotfix
分支的默认设置。因此,假设我正在开发一项长期功能,我们称其为 feature/long-time
。与此同时,我的同事们正在处理 feature/short-time
。想象一下,在一些工作之后,他们将 feature/short-time
提交到 develop
,而我偶尔会提交 feature/long-term
,这样他们就可以看到我的进度并安全备份。
当然,feature/long-term
不能忽视develop
分支太久,否则会落后。那么如何才能周期性地将develop
分支的修改同步到feature/long-term
分支呢?
我遇到过两种选择:
- 只是偶尔做
git merge
。但是,根据 Gitflow 的理念,我觉得这并不正确 - 我现在也看过
git rebase
几次,但是这似乎只有在您不将更改推送到远程分支时才有效,对吗?
总结:如何正确地使我的功能分支保持最新?
这又带回了合并与变基的讨论,这个讨论已经被多次解决了。长话短说,可以查here.
正如您正确所说的那样,如果您要推动您的分支机构,那么变基是不好的,因为更改您的 git 历史记录会使您强制推动,这对日常工作不利,但总的来说变基是 "cleaner" 而不是合并,所以:
- 如果您不得不 经常推送您的分支,无论出于何种原因(代码审查、CI 构建分支等),您最好的选择是
merge
。 - 如果您能够以独立的方式完全工作,避免频繁推送更改,可能
rebase
是更好的选择。
如果你的任务很长,即使 rebase 是你的主要策略,不时合并也是一个好主意,因为:
1.您的修改会不时备份到远程仓库中。
2. rebase 大量提交是不切实际的,因为差异是逐个提交计算的,而在合并中它是同时为所有提交计算的。这意味着对于大量提交,您可能需要解决不必要的大量冲突,这些冲突可以通过合并减少到每个文件一个。
总而言之,我建议大部分时间重新设置基准以保持干净的存储库,但不时合并以在存储库中保留分支的备份并点亮未来的重新设置基准。