使用git,我可以在Visual Studio中签出分支而不删除旧分支吗?

时间:2017-01-15 18:17:02

标签: git visual-studio-2015

我是git的新手,我们刚刚从TFS 2010切换到git。我们在远程服务器上创建了一个新的主分支和3个子分支。我安装了VS插件并克隆了远程存储库,该存储库将所有主文件下载到本地存储库中。

现在,当我从其他一个远程分支创建一个新的本地分支时,它会删除主分支的所有本地文件,并将它们替换为新签出分支的文件。当我再次签出master时,它会再次在本地删除新分支并将其替换为master分支。

有没有办法保留本地文件,以便快速切换分支,而不必一直重新下载每个文件?

4 个答案:

答案 0 :(得分:3)

与仅下载所需分支的TFVC不同,Git会将整个存储库下载到本地磁盘。从这个存储库中,它创建了一个工作文件夹,其中包含您签出的版本/分支上的文件。

当您从一个分支切换到另一个分支时,git仅替换与其本地缓存不同的文件。切换时不会传输文件。

虽然这有影响,但与TFVC不同,它不可能在同一个存储库(TFVC工作区)中同时打开两个分支,而是需要再次克隆存储库(您可以创建一个整个仓库的本地副本)并检查第二个仓库中的不同分支。当你想要同一个分支两个不同的版本时,在TFVC中也是如此。为此,您必须创建第二个工作区。

这一切的根本原因在于,在git中,分支只不过是指向版本的指针。并且在分支之间切换与在版本之间切换相同。而且由于Git拥有在回购中所做的所有更改的本地副本,因此切换速度快且效率高(当然可达到特定大小的回购)。

答案 1 :(得分:0)

通常git已在本地拥有所有分支,因此如果签出分支,则不会有额外的下载。

答案 2 :(得分:0)

克隆存储库时,将下载所有分支和所有文件的所有历史记录,并将其与其他一些数据一起放在“.git”文件夹中。

当您签出分支时,工作区将使用本地文件进行更新(无需下载!)

通常情况下,退房很快。如果不是这样,那么您在其中放置的文件就会出现问题。

与TFVC不同,您不得提交二进制文件或大文件。 我的建议是你应该清理你的历史(肯定是使用'BFG repo cleaner')

如果那不是真的可能,也许您应该使用'git-lfs'(由Tfs和其他git服务器支持)。

但是,从短期来看,如果你想查看2个不同目录中的2个分支,或许你可以查看'git worktree',就像你用TFVC做的那样......

但它不会帮助你获得git的真正力量: - (

答案 3 :(得分:0)

如果您签出另一个分支,则不会删除git中的分支。就像以上注释中所述,working/staging/commit中提到的文档确实很好地解释了这一点。

Git是分布式的,因此所有Branchs都存储在每台机器上,在其中您已获取/拉取了它。存储库的整个历史记录都存储在您的计算机上。

很明显,有一种方法可以删除分支(本地和远程),但这不是当前问题的一部分。