为什么可以使用未经修改的更改来切换SVN中的分支?

时间:2016-10-07 14:23:30

标签: git svn branch

我来自git所以也许还有我缺少的东西。查找以下示例:

让我说我有分支主机和分支机构发布,我在主机上做了一些更改,然后切换到发布而不提交更改,在git中我会得到像"无法切换分支未提交的更改,请提交或存储它们"。然而,在我最近在新公司使用SVN的经历中,我不仅可以毫无问题地切换分支,但我的更改仍然存在!

我有点困惑,所以一些指导将不胜感激。

2 个答案:

答案 0 :(得分:1)

只需使用您需要的分支机构签出新的工作副本。使用Subversion,您可以拥有无​​限数量的工作副本。

答案 1 :(得分:1)

简短回答:它就是这样,因为开发人员希望它是这样的。

如您所述,git告诉您如何获得svn行为(通过执行git stash && git checkout xyz && git stash pop)。

答案很长:我认为git开发人员喜欢这样做的原因是因为在结账时保留您的更改最终是一种3向合并操作。这些可能会导致冲突,并且通常会很重#34;通过强制git checkout只能在干净的工作目录上执行,您可以确保git快速无痛地失败或成功。

当您进行合并并且您的工作目录不干净时,它是相同的。 git也会否认这一行动。

所有这些都是为了您的保护。未提交的工作目录(和索引)更改不受提交保护。如果出现问题,它们将永远消失,无法恢复。合并冲突解决失败是使用git时可能出错的极少数事情之一,git无法避免这种情况(因为解决方案是人工操作)。< / p>

因此,如果git允许checkoutmerge进入不干净的工作目录,则必须为您执行git stash(或类似的)的背景;设计决定只是留给你,并避免可能导致数据丢失的奇怪星座。