推送提交到repo,但服务器上的repo不包含任何文件

Ale*_*lex 1 unix git version-control

到目前为止,我对git的使用主要是通过IDE进行的,我对我认为简单的事情有点噩梦.

在远程服务器上,我运行gitolite似乎工作正常,我的本地机器可以连接到服务器并执行简单的任务.

我在服务器上有一个repo,其名称与我本地的repo相同,但是本地repo在服务器版本之前创建了很长时间.

经过大量阅读后,建议克隆遥控器,然后推送到服务器.所以:

$ git clone ***server***:***repo***
Cloning into ***repo***...
warning: You appear to have cloned an empty repository.
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到一个鼓舞人心的信息:

$ git push origin master
Counting objects: 4070, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3737/3737), done.
Writing objects: 100% (4070/4070), 15.16 MiB | 588 KiB/s, done.
Total 4070 (delta 867), reused 0 (delta 0)
To ***server***:***repo***.git
 * [new branch]      master -> master
$
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错...... 但文件不在服务器上?

我应该合并,还有什么关于rebase ...这是我的知识完全崩溃的地方.我试过阅读git-scm文档,但我必须诚实......这是我的想法,这似乎应该是一件非常简单的事情.

Mic*_*ild 6

服务器只包含一个存储库,即没有结帐.这些文件只存储在您提及的objetcs/目录和pack文件中.您可以做些什么来验证文件确实存在,例如从本地计算机上的服务器创建新克隆.或者,在服务器上,您可以执行

git ls-tree -r master
Run Code Online (Sandbox Code Playgroud)

它应该为您提供所有文件的列表以及它们的模式和哈希值.

编辑:你想在Pro Git书中阅读服务器上关于Git的章节.

  • @Alex这不是它的工作原理.如果你想要文件,你将不得不做一个结帐/克隆.这些文件仅以内部repo格式存在.这就是拥有一个"裸"存储库的意义,这是一个可以推送到的存储库.如前所述,您无法推送到已检出的分支=拥有文件系统中的实际文件. (2认同)