相当于Subversion“switch”的git?

时间:2011-12-21 20:49:08

标签: git svn switch-statement

我有一些SVN存储库我正在考虑切换到git,但他们使用Subversion“switch”函数的方式我不知道如何在git中模拟。我该怎么做?

举一个具体的例子:我将我的主目录保存在SVN中。我查看了我工作的许多电脑。对于很多事情来说这很方便,但对于少数人来说并不是那么方便。例子:

  • 我有一个www /目录,我建立了一个个人网站。我只在家里的机器上工作这个网站,实际上有些文件我不想在所有其他机器上溅起。在repo本身,这是一个空目录,但是当我检查回购到我的家用机器时,我也将这个目录切换到回购中的一个不相关的位置,其中www /实际存在。所以大多数机器只获得一个空的www /,但选定的机器获取内容。

  • 我有一个包含MacOS文档的Documents /目录。其中很多。它们在我的许多Linux机器上都没用。出于空间原因,我拉出了上面提到的相同技巧:在repo中,Documents是空的,但是在repo路径的其他地方有一个实际的Documents文件夹,我在Mac上切换Documents /。

1 个答案:

答案 0 :(得分:4)

这不是switch命令首先意味着什么。

无论如何,您正在考虑使用git submodules来获得所需内容。 www和Documents可以是seitrate git存储库,你可以将它们作为主git存储库中的子模块。这样,当任何人克隆回购时,他们将获得空文件夹,除非他们更新子模块。

如果您不想要子模块,则必须明确克隆www和Documents的单独存储库并放入您的存储库。请注意,git不会跟踪空文件夹,因此您将无法拥有这些文件夹的占位符。

如果你不想要外部回购,另一种方法(不是真的推荐)就是用www表示创建孤儿分支:

git checkout --orphan
git rm -rf .
mkdir www
touch www/a
git add www
git commit -m "adding www"
git checkout master
git checkout www -- www

PS:svn switch的真正git​​等价物,用于它的目的是:

git checkout <branchname>