在没有任何工作树的情况下使用Git

时间:2012-12-23 10:19:03

标签: git version-control

假设您有一个裸存储库。它包含3个文件:

  • a.txt
  • b.txt
  • c.txt

现在,假设我没有b.txtc.txt,但我有a.txt文件的较新版本。是否可以在git中使用某个命令并告诉它更新存储库中的a.txt,而不必克隆/拉取其他文件?类似于:在该存储库中更新a.txt并仅查找已存在的文件中的更改。“如果没有,是否还有其他版本控制系统支持此操作?

更新

这方面的一个例子是: 像github这样的网站,每个存储库中包含大量存储库和大量文件。只有在这个网站上,用户不会总是看到最新版本。他们选择要修改的版本,有时他们会想要更新文件。在这种情况下,文件的总大小会太多。考虑到用户不会总是看到最新版本,我认为更好的方法是按需获得特定文件的单个版本,并且每当添加更新时,添加更新的文件。

2 个答案:

答案 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?(此问题与子目录有关,但对单个文件的工作方式完全相同)