文件未显示在远程存储库中

Files not showing up in the remote repository

提问人:Cato Johnston 提问时间:5/20/2009 更新时间:1/8/2012 访问量:5727

问:

关于 git 工作方式的基本问题。

我克隆一个存储库,进行一些更改,提交并将更改推送回原始存储库。

当我执行 时,会显示提交消息,但实际文件不在目录中。git log

他们应该在那里吗?

Git 的

评论

0赞 Jakub Narębski 5/20/2009
这个问题的答案可以在 git.or.cz/gitwiki/GitFaq 中找到(简而言之:推送不会更新工作目录,无论如何都不应该推送到非裸存储库)

答:

4赞 SpliFF 5/20/2009 #1

它们应该位于 .git(实际存储库)中。外部文件夹不是存储库,而是工作目录。

顺便说一句。手册页说:

描述

使用本地引用更新远程引用,同时发送完成给定引用所需的对象。

每次推送到存储库时,您都可以通过在那里设置钩子来使有趣的事情发生。参见 git-receive-pack(1) 的文档。

评论

0赞 JesperE 5/20/2009
如果它是裸存储库,则无需。没有可供它们显示的工作目录。如果希望它们显示在工作目录中的某个位置,则需要将裸存储库克隆到常规工作副本存储库中。
4赞 JesperE 5/20/2009 #2

您应该稍微了解一下裸存储库和具有工作副本的存储库之间的区别。裸存储库由 .git 目录(可能称为“.git”,也可能不称为“.git”)组成,它只是存储库数据库,没有工作副本。当您想要发布更改以供其他人拉取时,通常会使用此类存储库。我认为官方建议是只推送到裸露的存储库。

如果推送到裸存储库,则文件不会出现在任何工作副本中(当然,除了您自己的存储库)。但是,它们将显示在存储库中,但仅作为数据库对象显示。因此,如果您尝试在裸存储库中查找文件,则只会找到一堆管理文件和以 sha1 校验和命名的文件。

评论

0赞 Abizern 5/21/2009
那些以 sha-1 命名的文件是压缩文件、树和提交,它们被扩展为工作目录文件。
0赞 devrand 10/12/2010 #3

编辑:实际上,看起来更改更新后的钩子是正确的方法。

如果你真的需要这样做,你可以:

git reset --hard

git stash

这可能不是推荐的方式,但会产生预期的效果。