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

时间:2009-05-20 06:56:22

标签: git

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

我克隆了一个仓库,进行了一些更改,提交并将更改推回到原始仓库。

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

他们应该在那里吗?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

它们应该是.git(实际的回购)。外部文件夹不是repo,它是一个工作目录。

顺便说一句。该手册页说:

说明

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

通过在那里设置挂钩,每次推入存储库时都可以使存储库发生有趣的事情。请参阅git-receive-pack(1)的文档。

答案 2 :(得分:0)

编辑:实际上,更改post-update hooks似乎是正确的方法。

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

git reset --hard

git stash

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