【发布时间】:2018-07-11 09:35:02
【问题描述】:
当团队在 Laravel 项目上工作时,他们通常会编辑路由文件、相同的控制器和视图。导致数以千计的合并冲突。解决它们非常耗时。有没有办法防止这些冲突?
【问题讨论】:
当团队在 Laravel 项目上工作时,他们通常会编辑路由文件、相同的控制器和视图。导致数以千计的合并冲突。解决它们非常耗时。有没有办法防止这些冲突?
【问题讨论】:
什么是 git?
Git 是一个成熟的、积极维护的开源项目。数量惊人的软件项目依赖 Git 进行版本控制,包括商业项目和开源项目。 Git 是 DVCS(因此是分布式版本控制系统)的一个示例。与曾经流行的版本控制系统(如 CVS 或 Subversion(也称为 SVN)中常见的软件的完整版本历史记录只有一个位置不同,在 Git 中,每个开发人员的代码工作副本也是一个可以包含所有更改的完整历史记录的存储库。
除了分布式之外,Git 在设计时还考虑到了性能、安全性和灵活性。
什么时候使用 git?
例如,假设开发人员 Alice 对源代码进行了更改,为即将发布的 2.0 版本添加了一项功能,然后使用描述性消息提交这些更改。然后她处理第二个功能并提交这些更改。自然,这些在版本历史记录中存储为单独的工作。 Alice 然后切换到同一软件的 1.3 版分支,以修复仅影响旧版本的错误。这样做的目的是让 Alice 的团队能够在 2.0 版本准备好之前发布错误修复版本 1.3.1 版本。然后 Alice 可以返回 2.0 分支继续开发 2.0 的新功能,所有这一切都可以在没有任何网络访问的情况下发生,因此快速且可靠。她甚至可以在飞机上做到这一点。当她准备好将所有单独提交的更改发送到远程存储库时,Alice 可以在一个命令中“推送”它们。
git有什么优势?
Git 有很多用途和优势,但下面很少有人知道何时以及为什么要使用 git
如何解决 git 中的合并冲突?
希望这对您了解如何轻松解决 git 中的合并冲突问题有所帮助。用于此目的的最佳工具是 git-mergetool 运行合并冲突解决工具来解决 git 项目中的合并冲突。
使用 git mergetool 运行多个合并实用程序之一来解决 合并冲突。它通常在 git 合并后运行。
如果给定一个或多个参数,将运行合并工具程序以解决每个文件上的差异(跳过没有冲突的那些)。指定一个目录将包括该路径中所有未解析的文件。如果没有指定名称,git mergetool 将对每个有合并冲突的文件运行合并工具程序。
git mergetool 中的备份 git mergetool 在解析合并时创建 *.orig 备份文件。一旦文件被合并并且其git mergetool 会话已经完成,这些就可以安全地删除。
将 mergetool.keepBackup 配置变量设置为 false 会导致 git mergetool 在文件成功合并时自动删除备份。
如需进一步了解git mergetool,请查看链接:
https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/merge-conflicts
我认为这可能对你有帮助。
【讨论】:
是的GIT 对于大型项目来说是一个很好的解决方案。但是您必须处理route 或任何多人在处理的公共文件,以使合并冲突最小化。在任何常见文件上制作不同的代码块,例如:
/* Block 1 Start */
/* Block 1 End */
/* Block 2 Start */
/* Block 2 End */
把所有相关的功能都放在这些block里面,这样冲突就最小化了,一旦发生冲突,分块就很容易解决。
【讨论】:
在使用 git 时,几乎每个项目都会发生这种情况,我们都面临这样的情况,比如处理相同的文件会导致合并冲突,但另一方面,我们所有的团队成员在一天结束时都有一个同步的代码。此外,作为避免每次 pull 中出现多个合并冲突的替代方法,您可以创建分支,然后将代码推送到各自的分支。这样,只有将这些分支合并到主分支时才会出现合并冲突。这只是我认为 GIT 是项目管理的最佳工具。 如果您不想创建那么多分支,也可以尝试在文件中添加 cmets 部分。
【讨论】: