Vad*_*est 5 git rebase git-fork next-right-now
我是Next Right Now的主要作者,这是一个开源“样板”,其中包含使用 Next.js 框架构建 Web 应用程序的几个“预设”。每个预设都带有内置功能,旨在进行分叉,以便其他人可以基于它构建他们的应用程序。每个预设都位于自己的 git 分支中,例如:
我正在研究 NRN 并使其定期发展。但是,我也分叉了一个可用的 NRN 预设,并从中制作了我自己的专有应用程序。
为了避免术语误解,这里有一些定义。
这种做事方式的问题在于我不确定如何使“Fork”与 NRN 样板预设保持同步。两者都以自己的方式发展。此外,NRN 不是一个框架而是一个样板,它旨在被覆盖以自定义基本代码,这最终会导致 Fork 和 Source 之间的许多冲突。
为了让我的 Fork 与 Source 上的最新更改同步,我基本上rebase是在 Source git 历史记录之上进行自己的工作。(如:git rebase NRN-v2-mst-aptd-at-lcz-sty)
这具有以下优点(优点):
push --force覆盖远程,将 Source 中完成的新更改同步到 Fork 中。但也有一些缺点(缺点):
Fork:master分支,恕我直言,这不是那么好,如果处理不当可能会导致很多麻烦。我对我正在做的事情有点熟悉,但是如果团队中有更多人,这将不可行。使用 rebase,我最终不得不擦除我的整个工作分支并通过挑选我在 Fork 中完成的所有提交从源重新创建它,因为历史不再匹配,我需要一个干净的开始。这是在我以错误的方式重新定位而犯了一些错误之后发生的。
我目前的方式工作正常,只要我是独奏,只要我很好地了解我的 git 分支,只要我不通过重新设置和推动 --force 错误的方式来搞砸。不过,这并不能让我满意。
我正在寻找一种更好的方法,该方法可用于团队,并且我可以将其用作“官方推荐”的方式来保持 Fork 与其 NRN 源同步。
我想过 cherry-pick过从 Source 向 Fork 提交 -ing 提交,但我不确定这是否是更好的选择,因为它会将 Source 和 Fork 提交混合在一起(两者之间不再分离)。这最终会导致在比较两棵树并找出哪些提交已经被挑选出来而哪些没有被挑选时遇到困难。此外,它并不能保护我免于忘记挑选一个提交并在数周后遇到麻烦,这可能会导致使用 --force 重写历史记录以将丢失的提交包含在正确的位置。
我没有考虑任何其他选择,因为我不知道。
因此,我正在为我的特定用例寻找“最佳实践”。我很确定 Git 有一些很棒的方法来处理这个问题,这是我不知道的。
git --force-with-lease是一个更安全的选项,如果将更多提交添加到远程分支(由另一个团队成员或同事或您拥有的其他人),则不会覆盖远程分支上的任何工作。它确保您不会通过强制推送来覆盖别人的工作。
如果每个功能都经过拉取请求,并且没有直接在 master 分支上进行任何更改,则单独 Rebase 仍然是一个不错的选择
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |