Git:从本地仓库推送的文件未在远程Git仓库中显示

3
我是一个全新的Git用户,正在努力学习。我一直在尝试通过远程服务器和本地机器来了解Git。我已经成功地在我的远程服务器和本地机器(OSX)上安装了Git。我使用的是名为Tower的Mac Git客户端,以下是我的困境:
我可以在我的远程服务器上成功创建裸库,没有任何问题。然后我打开Tower并尝试将我的远程仓库克隆到我的本地机器上。我也能够做到这一点,我可以将远程repo成功地克隆到本地机器上。然而,每当我向本地分支添加一个新文件,然后提交该更改并将其推送到远程repo时,它显示成功执行,但是当我检查我的远程repo位置时,那里没有新文件?
Tower说该文件存在于远程repo中,我可以将该repo checkout到一个新的本地分支上,并拉取之前的提交历史和文件,但我找不到文件存储在我的远程repo的位置。
我错过了什么?任何建议都将不胜感激,谢谢!
1个回答

3
它们被存储为Git对象。裸仓库没有工作目录,因此服务器上不会有任何已检出的文件。数据存储在Git自己的内容寻址文件系统中的“objects”目录下,由对象内容的SHA1哈希键入。对象包括blob(文件数据)、tree(文件和树的列表)和commit(元数据,例如作者姓名、时间戳、提交消息、父提交对象ID以及与提交对应的tree对象ID)。 (这些对象也可以合并成packs,并位于“objects/pack”目录下。)

好的,那很有道理,那么获取那些无法访问的远程文件的最佳方法是什么,以便我可以更新实时网站?如果这听起来像个愚蠢的问题,对不起,我是个完全的新手。 - lewisqic
将代码库克隆到Web服务器上,检出生产分支,并在需要将现场部署更新为生产分支上的最新代码时执行git pull - cdhowie
也许我漏掉了什么,但对于我的目的来说,这似乎有点冗余。是否可能在不使用生产分支的情况下直接从我的本地计算机推送到实时部署? - lewisqic
1
你不必使用单独的分支,但也不能只是推送。推送不会更新目标存储库工作目录中的任何签出文件。你仍然需要以某种方式操作远程存储库。使用 Git 部署网站的规范方法是将中央存储库克隆到生产服务器并拉取更新。向生产存储库推送不是一个好主意。 - cdhowie
明白了,现在完全理解了。还有一个问题...除了使用命令行之外,是否还有其他方法可以将更新拉到实时服务器上? - lewisqic
1
你可以在中央代码库上使用 post-receive hook 触发从部署代码库的拉取,或者编写一个简单的 Web 应用程序,在单击按钮时执行拉取操作。如何处理由你决定。 - cdhowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接