Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git处理具有两个不同源的文件_Git_Git Branch_Git Merge - Fatal编程技术网

如何使用git处理具有两个不同源的文件

如何使用git处理具有两个不同源的文件,git,git-branch,git-merge,Git,Git Branch,Git Merge,我有一个由两部分组成的软件项目。在第一部分中,我正在将一些古老的文件从滑铁卢脚本转换为xml。第二部分是将xml转换为SQL命令,我可以使用这些命令创建数据库来运行网站 我编写了一个解析器,它接受旧文件,并创建了一个基本正确的“ent.xml”文件。它看起来不错,但在我对它进行一些手动编辑后,效果会更好。此外,我还添加了完成项目所需的更新信息 但是,我偶尔会发现我的解析有错误,我需要修复解析器并重新创建“ent.xml”。但这通常会与我对同一文件所做的手动编辑产生冲突 我想使用git来处理这些冲

我有一个由两部分组成的软件项目。在第一部分中,我正在将一些古老的文件从滑铁卢脚本转换为xml。第二部分是将xml转换为SQL命令,我可以使用这些命令创建数据库来运行网站

我编写了一个解析器,它接受旧文件,并创建了一个基本正确的“ent.xml”文件。它看起来不错,但在我对它进行一些手动编辑后,效果会更好。此外,我还添加了完成项目所需的更新信息

但是,我偶尔会发现我的解析有错误,我需要修复解析器并重新创建“ent.xml”。但这通常会与我对同一文件所做的手动编辑产生冲突

我想使用git来处理这些冲突。它有一个很好的冲突管理系统,我觉得我可以用它来合并变化,让双方都满意

我想我会创建一个“解析器”分支,并在那里对解析器进行所有更改。我将继续使用“主”分支对文件进行手动编辑。在修复解析器错误后,我会将“parser”与“master”合并

接下来的问题是如何处理下一个解析器错误?合并后,“解析器”分支应与“主”分支有效地相同。不是吗?基本上,我希望两个不同的来源都编辑一个文件的基础上不断


我是否可以继续使用未编辑的“ent.xml”对“parser”分支进行更改,并将其多次合并到“master”分支中?或者有没有更好的方法来做我想做的事情?

首先,恐怕git不打算这样使用。从长远来看,最好的解决方案是编写一些合并输入文件的代码

无论如何,这里有一个可能的
git
解决方案。我知道您希望将手册和解析器编辑分开保存分支

您可以创建3个分支:

parser # here you will update your parser edits
manual # here you will update your manual edits
result (or maybe master) # you can merge both parser and manual in here

现在,您可以自由编辑
解析器
手动
分支,如果需要,可以将结果合并到
结果

中。这取决于所做更改的类型和预期冲突的外观。您描述的方法会导致恼人的冲突,除非您只进行一些手动更改,并且更改解析器也只会更改几行。在类似的情况下,我编写了一个sed(或awk)脚本来执行“手动编辑”。我强烈反对将生成的任何内容放在git存储库中,这也得到了解决:您只需使用解析器生成xml文件,然后在其上运行sed脚本。在另一个例子中,我编写了一个特殊的新工具来进行合并。