git - Git 合并问题 - 避免冲突和混乱
问题描述
很长一段时间以来,我一直在使用 git。但是每当出现我必须创建新分支并合并它的情况时,我个人都会避免它,因为我在为我的一个项目做这件事时遇到了很多问题。在 git merge 之后它被破坏了,并且项目有很多错误。
所以现在我想了解 git merge 或 rebase。
我听说过 rebase 但仍然没有使用它,认为它与 git merge do 具有相同的效果:p
举个例子
我正在主分支上工作,项目已完成。现在我想根据新设计将项目更新为全新的布局。
所以我创建了一个名为 layout 的分支。我已经在布局分支中集成了新模板并添加了新功能。
这是我想在我的主分支中添加的新功能,而无需获取新模板。
我怎样才能做到这一点。
解决方案
您将同时与合并和变基发生冲突,这不是变基的重点。
这里的关键是经常合并(或变基),可能一天多次。这样,您只需处理通常很容易解决的少量冲突。另一方面,如果你有一个运行时间很长的分支,并且在很长一段时间内没有合并它,你会在多个文件中出现很多冲突,以至于无法处理它们,你将需要一个巨大的没有做错事的运气。
所以使用短命的分支,每天至少合并一次。
那么问题是如果您只有短暂的分支,您如何添加更大的功能,例如您提到的新布局。
一种解决方案是使用功能切换:即使该功能尚未准备好向用户显示,也将新功能合并到主分支中,并使用功能切换来隐藏该功能。一旦您确定该功能足够好,只需打开功能切换,新功能现在对用户可见。
有关功能切换的更多信息:https ://martinfowler.com/articles/feature-toggles.html
如果需要,您甚至可以使用托管服务:https ://configcat.com/
推荐阅读
- php - 我怎样才能使分页?
- c++ - 安装多个版本时使用特定的 protobuf 版本
- python - Python中的单向OneToOne关系SqlAlchemy
- php - 退出时不重置循环后数据(我怀疑)
- php - 如何使用 Laravel 存储图像?
- ruby - 重定向标准输出时,将 /dev/stdout 作为文件写入失败并出现 Errno::EACCES
- node.js - Discord.js ytdl 错误:输入流:状态代码:416
- linux - 为什么重新启动 AWS ec2 实例(sage maker)时会丢失 shh 密钥?
- python - 创建一个接受单词列表的函数,并返回句子中的一组单词
- angular - 当 proxy.conf.json 中的路径更改时,Java 应用程序无法识别更改