现在,当我基于其他远程分支创建新的本地分支时,它会删除主分支的所有本地文件,并用新检出的分支的文件替换它们。当我再次切换到主分支时,它又会删除本地分支并用主分支替换它。
是否有一种方法可以保留本地文件,以便快速切换分支,而不必每次重新下载所有文件?
与 TFVC 不同,Git 下载整个仓库到本地磁盘。从这个仓库中,它创建了一个工作目录,其中包含您所检出的版本/分支的文件。
当您从一个分支切换到另一个分支时,Git 仅替换与本地缓存不同的文件。在切换时没有传输任何文件。
这意味着,与 TFVC 不同,在同一仓库(TFVC 工作区)中无法同时打开两个分支,而是需要再次克隆仓库(可以创建整���仓库的本地副本),并在第二个仓库中检出另一个分支。当您想要同一分支的两个不同版本时,在 TFVC 中也是如此。为此,您需要创建第二个工作区。
这一切背后的原因是,在 Git 中,分支只是指向版本的指针。在不同分支之间切换就像在版本之间切换一样。因为 Git 有所有在仓库中进行的更改的本地拷贝,所以切换非常快速和高效(当然,这取决于仓库的大小)。
git worktree
。 - Philippe当你克隆一个仓库时,所有的历史记录、分支和文件都会被下载并放在'.git'文件夹中,同时还有其他一些数据。
当你检出一个分支时,工作区会更新本地文件(无需下载!)
通常情况下,检出操作很快。如果不是这种情况,那么你可能有问题,需要对其进行修复。
与TFVC不同的是,你不应该提交二进制文件或大文件。因此我的建议是使用'BFG repo cleaner'来清理你的历史记录。
如果这不是真正可行的方法,也许你应该考虑使用'git-lfs'(由Tfs和其他git服务器支持)。
但是,从短期来看,如果你想像在TFVC中那样在2个不同的目录中检出2个分支,也许你可以尝试一下'git worktree'。
但是,这并不能发挥git的真正威力 :-(
在git中,如果您切换到另一个分支,之前的分支不会被删除。正如上面的评论所述,working/staging/commit中提到的文档已经很好地解释了这一点。
Git是分布式的,因此所有分支都存储在每台机器上,您已经获取或拉取了它。整个仓库的历史记录都存储在您的机器上。
显然,有一种方法可以删除分支(本地和远程),但这不是当前问题的一部分。