当它适用于 Git 时,我仍然很难理解 staging 的概念。
可以用 SVN 做任何类比吗?在 Git 中设置阶段级别的主要目的是什么?
暂存区的主要优点是您可以轻松地仅提交给定文件中的部分更改。(git add -p
例如使用。)据我所知,在 SVN 中进行“部分”提交的唯一方法是在每个文件级别上,或者通过手动备份文件然后临时恢复您不想要的更改承诺。
如果(像我一样)你不是一个高度组织化的开发人员,并且希望能够在事后将更改整理成“整洁”的提交,那就太好了。这遵循了 Git 的一般态度,即宁愿给你灵活性而不是强制严格。如果你不需要它,你总是可以不使用它,而使用git commit -a ...
.
SVN 无法类比,因为 SVN 不是 Git,也没有这样的概念。
相似之处:
必须添加应该是存储库一部分的文件才能被跟踪。这两个工具都使用该add
命令来完成此操作。添加文件意味着准备提交。
差异:
Git 在添加文件时允许更多细节。您可以决定添加整个文件或不同的代码行。将文件添加到索引或阶段允许更大的灵活性。SVN 自动提交对已添加到存储库的文件的所有更改。Git 将与每个提交操作关联的更改的决定权留给用户。换句话说:Git 中的下一次提交仅包含已暂存的那些更改(行或文件),而与文件的跟踪状态无关。SVN 自动包含跟踪文件的所有更改。
附加信息:
尝试阅读一些描述 Git 工作流程的文章,例如Oliver Steele的文章。但请注意,使用 Git 的方法不止一种——有很多种。如果你愿意,你可以像使用 SVN 一样使用 Git。
不要期望在短时间内理解 Git 的哲学。我花了一年的时间才开始使用它,但我仍然在学习使用它的新方法。我认为如果你是在 SVN 思维模式下长大的,那就更难了。那里有大量的材料:文章、视频…… - 花点时间尝试其中的一些。这是我收集的列表中的一个选择。
以下是一些显示分期有用的场景:
你在一个特定的作品上工作,并且在你的项目中做了很多改变。在测试完整的东西之前,您还不想提交它们。但是这些更改通常可以独立到足以进行多个逻辑提交而不是单个大提交。这是您暂存选择性部分并进行多次提交的时候。
在调试时,登台特别有用。您可以在日志语句周围散布以跟踪错误的来源。然后您进行修复,并使用这些日志语句再次测试。但是,您希望在对代码进行任何更改以删除这些日志语句之前提交修复。
事实证明它有用的另一种情况是,当您正在做某事时,发现一些不相关的东西,例如拼写错误,您想要修复并快速解决它。
还有其他几种这样的场景,一旦你掌握了它,你可能无法使用任何缺乏这个概念的东西:)。
PS:我根本没有用过SVN,所以无法对两者进行比较。