我和我的朋友需要并行开发一个项目。这该怎么做?
我在每个叶子上创建了两个分支。试图合并叶子,但编辑文件的冲突错误。合并它们的方法是什么?
我想知道是否可以在一个分支中有2个叶子?如果是这样,那么除了默认叶子之外,如何创建一个新叶子。
答案 0 :(得分:5)
每个分支随时都有一片叶子。它们从每个分支的角度表示存储库的最新状态。正如您的帖子所提到的,分支用于提供存储库中的并行开发。它们也是自动创建的(在这种情况下称为“fork”),以防止在每次提交具有相同的直接祖先时对同一分支进行两次提交...允许这就像在同一分支上有多个叶子一样。
要创建一个新的开发分支,可以打开化石仓库并执行如下命令:
fossil branch new some_feature trunk
为了举例,我快速创建了一个新的存储库,并将一个文件添加到主干(最初的唯一分支)file.txt
。我的示例文件的初始内容是:
here
is
a
file
在使用注释“create baseline
”提交添加的文件后,我根据{的当前状态(也称为叶子)为名为“some_feature
”的新功能创建了一个开发分支。 {1}}分支...
trunk
现在有两个分支,fossil branch new some_feature trunk
和trunk
。创建分支不会改变我的工作分支,所以我仍然在some_feature
。然后我将基线文件编辑为:
trunk
...将“文件夹”添加到最后。然后我将更改提交到here
is
a
file
folder
并添加了评论“trunk
。然后我将开发切换到modification on first branch... trunk
分支......
some_feature
从第二个分支开始,我还编辑了基线文件的最后一行:
fossil co some_feature
...将“读者”添加到最后。然后我将更改提交到here
is
a
file
reader
并添加了评论“some_feature
”。
要合并开发,您选择要将更改合并到的分支。在这种情况下,我将功能分支更改合并到主干中。为此,您必须先检查合并的目标分支...在我的情况下,modification on second branch... some_feature
。
trunk
然后,我合并了另一个分支的特定提交的更改。就我而言,我将使用该分支的叶子:
fossil co trunk
现在我的工作目录中有四个文件而不是一个。没有新的提交/签入实际上已将其恢复到存储库中。这四个文件是:file.txt,file.txt-baseline,file.txt-merge和file.txt-original。 “file.txt-baseline”是合并分支的最新共同祖先中存在的文件。 “file.txt-original”是目标brach中存在的文件,在我的情况下,fossil merge some_feature
MERGE file.txt
***** 1 merge conflicts in file.txt
WARNING: 1 merge conflicts
"fossil undo" is available to undo changes to the working checkout.
,就在合并之前。 “file.txt-merge”是您正在合并的分支中存在的文件,在我的例子中是trunk
。最后,“file.txt”包含基线文件的内容,其中包含原始文件和注释合并文件的冲突更改,因此您可以决定如何处理不同的内容。
在我的情况下,生成的冲突文件“file.txt”如下所示:
some_feature
直到合并冲突注释从文件中删除,化石将不允许你提交(或者它至少会警告它)。否则,您将使用消息进行提交,例如“将some_feature合并到主干”。
作为参考,这里是化石为本例提供的事件历史图表: