我和我的朋友需要并行开发一个项目。这个怎么做?
我在每片叶子上创建了两个分支。尝试合并叶子,但编辑文件出现冲突错误。合并它们的方法是什么?
我想知道一个分支是否可以有2片叶子?如果是这样,那么除了默认叶子之外,如何创建新叶子。
我和我的朋友需要并行开发一个项目。这个怎么做?
我在每片叶子上创建了两个分支。尝试合并叶子,但编辑文件出现冲突错误。合并它们的方法是什么?
我想知道一个分支是否可以有2片叶子?如果是这样,那么除了默认叶子之外,如何创建新叶子。
每个分支在任何时候都有一片叶子。从每个分支的角度来看,这些代表了存储库的最新状态。正如您的帖子所提到的,分支用于在存储库中提供并行开发。它们也是自动创建的(在这种情况下称为“分叉”),以防止当每个提交具有相同的直接祖先时,两次提交到同一个分支......允许这就像在同一个分支上有多个叶子一样。
要创建一个新的开发分支,需要打开一个化石存储库并执行如下命令:
fossil branch new some_feature trunk
例如,我快速创建了一个新的存储库并将一个文件添加到主干(最初唯一的分支)file.txt
,. 我的示例文件的初始内容是:
here
is
a
file
在提交带有注释“”的添加文件后,我根据分支的当前状态(又名叶子)create baseline
为一个名为“”的新功能创建了一个开发分支......some_feature
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
然后,我合并来自另一个分支的特定提交的更改。就我而言,我将使用该分支的叶子:
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、file.txt-baseline、file.txt-merge 和 file.txt-original。“file.txt-baseline”是合并分支的最近共同祖先中存在的文件。“file.txt-original” 是目标分支中存在的文件,在我的情况下,trunk
就在合并之前。“file.txt-merge”是您要合并的分支中存在的文件,在我的情况下,some_feature
. 最后,“file.txt”包含基线文件的内容,其中包含与原始文件和合并文件的冲突更改的注释,因此您可以决定如何处理不同的内容。
就我而言,生成的冲突文件“file.txt”如下所示:
here
is
a
file
<<<<<<< BEGIN MERGE CONFLICT: local copy shown first <<<<<<<<<<<<<<<
folder
======= COMMON ANCESTOR content follows ============================
======= MERGED IN content follows ==================================
reader
>>>>>>> END MERGE CONFLICT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
在从文件中删除合并冲突注释之前,fossil 不会让你提交(或者它至少会警告它)。否则,您将使用消息进行提交,例如“merged some_feature into trunk”。
作为参考,这里是由化石为此示例提供的事件历史图: