获得Git概念的“舞台”

时间:2012-07-28 17:25:07

标签: git workflow git-index git-stage

仍然很难让我的脑袋围绕着适用于Git的舞台概念。

可以用SVN进行任何类比吗? 在Git中拥有阶段级别的主要目的是什么?

3 个答案:

答案 0 :(得分:7)

<强>相似点:

必须添加应该是存储库一部分的文件才能被跟踪。这两个工具都使用add命令来完成此任务。添加文件意味着准备提交。

<强>差异:

Git在添加文件时允许更详细的细节。您可以决定添加整个文件或不同的代码行。 将文件添加到索引阶段可以提供更大的灵活性。 SVN自动提交已添加到存储库的文件的所有更改。 Git决定将与每个提交操作相关联的更改与用户相关联。换句话说:Git中的下一个 commit 仅包含已暂存的那些更改(行或文件),而不管文件的跟踪状态如何。 SVN自动包含跟踪文件的所有更改。

其他信息:

尝试阅读一些描述Git工作流程的帖子,例如来自Oliver Steele的帖子。但请注意,使用Git有不是一种方式 - 有许多方法。如果你愿意,可以像使用SVN一样使用Git 不要指望在很短的时间内理解Git的哲学。我花了一年时间才进入它,我仍然学习使用它的新方法。我认为如果你在SVN心态下长大,那就更难了。那里有大量的材料:文章,视频,...... - 花点时间尝试其中的一些。以下是我收集的清单中的一个选择。

答案 1 :(得分:6)

暂存区域的主要优点是您可以轻松地仅提交给定文件中的部分更改。 (例如,使用git add -p。)据我所知,在SVN中进行“部分”提交的唯一方法是在每个文件级别上,或者通过手动备份文件然后暂时还原更改你不想提交。

如果(像我一样)你不是一个高度组织化的开发人员并希望在事后能够将更改整理成“整洁”的提交,那就太棒了。这遵循Git的一般态度,即倾向于为您提供执行严格性的灵活性。如果您不需要它,您可以随时使用它,并使用git commit -a ...

SVN没有类比,因为SVN不是Git而且没有这样的概念。

答案 2 :(得分:4)

以下是一些显示分段有用性的方案:

  • 您正在处理某个特定部分,并在整个项目中进行了大量更改。在测试完整的东西之前,你不想提交它们。但是这些更改通常可以足够独立,以进行多个逻辑提交而不是单个大提交。这是当你选择部分并进行多次提交时。

  • 在调试时,分段特别有用。您可以遍历日志语句以跟踪错误的来源。然后进行修复,并使用这些日志语句再次测试。但是,您希望在对代码进行任何更改之前提交修复,以删除这些日志语句。

  • 另一个被证明有用的方案是,当你正在做某事时,发现一些无关的东西,比如拼写错误,你想要修复并快速解决它。

还有其他一些这样的场景,一旦你掌握了它,你可能无法使用任何缺乏这个概念的东西:)。

PS:我根本没有使用过SVN,所以无法在两者之间进行比较。

相关问题