假设您有一个裸存储库。它包含3个文件:
a.txt
b.txt
c.txt
。现在,假设我没有b.txt
和c.txt
,但我有a.txt
文件的较新版本。是否可以在git中使用某个命令并告诉它更新存储库中的a.txt
,而不必克隆/拉取其他文件?类似于:在该存储库中更新a.txt
并仅查找已存在的文件中的更改。“如果没有,是否还有其他版本控制系统支持此操作?
这方面的一个例子是: 像github这样的网站,每个存储库中包含大量存储库和大量文件。只有在这个网站上,用户不会总是看到最新版本。他们选择要修改的版本,有时他们会想要更新文件。在这种情况下,文件的总大小会太多。考虑到用户不会总是看到最新版本,我认为更好的方法是按需获得特定文件的单个版本,并且每当添加更新时,添加更新的文件。
答案 0 :(得分:4)
Subversion可以做你想要的。对于git,还有一个类似的问题:Pull single file on server
答案 1 :(得分:1)
如果没有存储库的副本,你就不能那样 - 这就是git的工作方式。如果你想在没有完全访问它的完整副本的情况下对存储库做东西,git不适合你。但正如我从您的评论中所理解的那样,您的服务器上确实有存储库,而这实际上就是您想要完成所有工作的地方。你只是不想做一个完整的结账只能触摸一个文件。
如果这是正确的,那么你正在寻找一个在git中被称为“稀疏结账”的功能,并且从1.7开始就可以使用。有关详细信息,请参阅我的回答:How do I clone a subdirectory only of a Git repository?(此问题与子目录有关,但对单个文件的工作方式完全相同)