通过使分支非常便宜,SVN使分支变得更容易,但合并仍然是SVN中的一个真正的问题--Git据说可以解决这个问题.
Git能实现这一目标吗?
(免责声明:我所知道的关于Git的全部内容都是基于Linus讲座 - 这里的总git noob)
所以我一直在开发一个wiki类型的网站.我想要决定的是合并同时由两个用户编辑的文章的最佳算法.
到目前为止,我正在考虑使用维基百科的合并文档的方法,如果编辑了两个不相关的区域,但如果两个提交冲突则丢弃旧的更改.
我的问题如下:如果我有原始文章,并对其进行了两处更改,那么合并它们然后在出现冲突时处理冲突的最佳算法是什么?
我们的网站使用一堆带翻译的JSON文件进行本地化(每种语言一个文件).文件的内容如下所示:
{
"Password": "Passwort",
"Tables": "Tische"
}
Run Code Online (Sandbox Code Playgroud)
许多团队成员同时编辑这些JSON文件,添加新短语和编辑现有短语,即使人们正在更改不同的行,我们也会遇到很多冲突.
有没有办法以这样的方式设置git,以帮助避免合并冲突?
PS 我发现这个脚本有助于本地合并:https://gist.github.com/jphaas/ad7823b3469aac112a52.但是,我对能够解决团队中每个人的问题的解决方案感兴趣(即使是通过GitHub的Web界面编辑JSON的人).
我想自动合并提交,其中每个提交更改同一行上的不同单词。目标是使用git作为文档存储并以编程方式访问它(因此,理想情况下无需解决冲突)。在我的用例中,我确信更改不会重叠(它们不会影响相同的单词,尽管位于同一行)。
git-diff可以向我展示两次提交之间的差异,不仅是每行,而且是每个单词或每个字符。例如:
$ git diff --word-diff-regex=. HEAD HEAD~
Run Code Online (Sandbox Code Playgroud)
如果git-diff可以识别发生变化的单词(而不是整行),我确信我可以git-merge逐字(或逐字符)地检测冲突。我错了。根据我的理解(来源),在深处,该git-diff工具在行上运行,并且单词或字符差异功能已经与 git 返回的这些基于行的结果一起使用。
在这个答案中,建议使用干净和污迹过滤器,以便将每个单词存储在快照中的单独行上。然而,在我看来,这太过分了。
你会选择什么方法?