关于git工作方式的基本问题。
我克隆了一个仓库,进行了一些更改,提交并将更改推回到原始仓库。
当我执行git log
时,会显示提交消息,但实际文件不在目录中。
他们应该在那里吗?
答案 0 :(得分:3)
它们应该是.git(实际的回购)。外部文件夹不是repo,它是一个工作目录。
顺便说一句。该手册页说:
说明
使用本地引用更新远程引用,同时发送完成给定引用所必需的对象。
通过在那里设置挂钩,每次推入存储库时都可以使存储库发生有趣的事情。请参阅git-receive-pack(1)的文档。
答案 1 :(得分:3)
您应该阅读一下裸存储库与具有工作副本的存储库之间的区别。 Bare repos由.git目录(可能或可能不称为“.git”)组成,它只是存储库数据库,没有工作副本。当您想要发布更改以供其他人使用时,通常会使用此类回购。我认为官方的建议是将仅推送到裸存储库。
如果您推送到裸存储库,您的文件将不会出现在任何工作副本中(当然,除了您自己的存储库中)。但是,它们将出现在repo中,但仅作为数据库对象出现。因此,如果您尝试在裸仓库中找到您的文件,您将只找到一堆以sha1校验和命名的管理文件和文件。
答案 2 :(得分:0)
编辑:实际上,更改post-update hooks似乎是正确的方法。
如果你真的需要这样做,你可以:
git reset --hard
或
git stash
这可能不是推荐的方式,但会产生预期的效果。