Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 - Fatal编程技术网

签出所有git标记

签出所有git标记,git,Git,我目前正在考虑迁移到git,但似乎找不到一个优雅的解决方案来解决我们目前使用svn标记的方式。在我当前的存储库中,我有 tags tags/1 tags/1.1 tags/1.n tags/live tags/library tags/library/1 tags/library/2 其中1-1.n是版本,我将最新版本合并到live中,并且库包含每个版本可能使用的库。我知道如何在git中创建1.n标记,但我很难看到如何创建live和library标记 我是否应该对此进行单独的回购,并将1-1.

我目前正在考虑迁移到git,但似乎找不到一个优雅的解决方案来解决我们目前使用svn标记的方式。在我当前的存储库中,我有

tags
tags/1
tags/1.1
tags/1.n
tags/live
tags/library
tags/library/1
tags/library/2
其中1-1.n是版本,我将最新版本合并到live中,并且库包含每个版本可能使用的库。我知道如何在git中创建1.n标记,但我很难看到如何创建live和library标记


我是否应该对此进行单独的回购,并将1-1.n中的标记作为子模块拉入,或者git可以直接这样做?

在我看来,
live
应该是一个分支,而不是一个标记。以防您不知道:与svn不同,svn将分支和标记视为简单的树复制操作(唯一的区别是使用它们时使用的约定),git的分支和标记只是指向特定提交的指针,主要区别是活动分支遵循提交,而标记始终保留在创建它们所依据的提交上

库目录不是分支或标记。它可能会被git子模块所取代,但它们是需要处理的棘手的小问题,因此您可能希望避开它们,直到您在一般git工作流中提升了一点技能。别误会我;子模块正是管理第三方依赖关系的正确工具,但它们确实需要一些时间来适应,如果您对底层git模型没有很强的直觉,那么子模块就会显得非常神秘和破碎


更一般地说,从svn到git的过程中,最大的损失是预先建立的工作流的便利性。Git可以让您遵循常见的svn工作流以及更多的工作流程,但是如果您不在如何使用Git方面采取某种限制,您可以轻松地对您的历史进行炒蛋。你可以找到一个非常有效的工作流程。它不是唯一可能的工作流,甚至可能不是最适合您的情况,但它可以作为您构建自己的工作流的起点。例如,在我们的商店,也从svn搬来,我们坚持在
master
上进行大部分提交,他们使用
develope
分支,我们在
release
分支上标记东西,而不是在
master
上标记。因此,我们的工作流程基本上与他们的相同,但对长期存在的分支有不同的名称选择。

在我看来,
live
应该是一个分支,而不是一个标记。以防您不知道:与svn不同,svn将分支和标记视为简单的树复制操作(唯一的区别是使用它们时使用的约定),git的分支和标记只是指向特定提交的指针,主要区别是活动分支遵循提交,而标记始终保留在创建它们所依据的提交上

库目录不是分支或标记。它可能会被git子模块所取代,但它们是需要处理的棘手的小问题,因此您可能希望避开它们,直到您在一般git工作流中提升了一点技能。别误会我;子模块正是管理第三方依赖关系的正确工具,但它们确实需要一些时间来适应,如果您对底层git模型没有很强的直觉,那么子模块就会显得非常神秘和破碎


更一般地说,从svn到git的过程中,最大的损失是预先建立的工作流的便利性。Git可以让您遵循常见的svn工作流以及更多的工作流程,但是如果您不在如何使用Git方面采取某种限制,您可以轻松地对您的历史进行炒蛋。你可以找到一个非常有效的工作流程。它不是唯一可能的工作流,甚至可能不是最适合您的情况,但它可以作为您构建自己的工作流的起点。例如,在我们的商店,也从svn搬来,我们坚持在
master
上进行大部分提交,他们使用
develope
分支,我们在
release
分支上标记东西,而不是在
master
上标记。因此,我们的工作流程基本上与他们的相同,但对长期存在的分支有不同的名称选择。

如果历史上发生了变化,则不应使用标签。图书馆不应该在他们的标签里。它们应该是存储库正常结构的一部分,或者在不同的存储库中。换句话说,,你手头有一堆乱七八糟的东西,用一种有意义的方式将它转换成git可能不容易。在svn中,这个文件夹结构适用于我们的部署堆栈,允许我们在同一台机器上运行不同的版本-我知道这不是最好的结构,但它适用于我们需要做的事情您在svn中调用标记的东西不是标记,也不能在真正知道标记是什么的VCS中用作标记。只是svn是无知的,它让你把任何旧东西都称为标签。如果历史上发生了变化,那么它就不应该是标签。图书馆不应该在他们的标签里。它们应该是存储库正常结构的一部分,或者在不同的存储库中。换句话说,,你手头有一堆乱七八糟的东西,用一种有意义的方式将它转换成git可能不容易。在svn中,这个文件夹结构适用于我们的部署堆栈,允许我们在同一台机器上运行不同的版本-我知道这不是最好的结构,但它适用于我们需要做的事情您在svn中调用标记的东西不是标记,也不能在真正知道标记是什么的VCS中用作标记。只是svn是无知的,让你把任何旧东西都称为标签。谢谢,这真的很有帮助,是一个很好的开始,但听起来git实际上不允许我们做我们想做的事情,因为我们希望所有这些标签同时放在一个目录中。@JakeStride,in