2015-02-09 426 views
2

我遵循Git Pro书(http://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server)在Ubuntu上设置我的第一个git远程服务器。 后,我按照这个:Git - 推送失败/此操作必须在工作树中运行

$ git remote add origin [email protected]:/opt/git/inventory.git 
$ git push origin Windows 

我收到此消息:

Counting objects: 33, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (28,28) done. 
Writing objects: 100% (33/33), 7.30 KiB | 0 bytes/s, done. 
Total 33 (delta 13), reused 0 (delta 0) 
To [email protected]:/opt/git/inventory.git 
* [new branch] Windows -> Windows 

但是,当我在远程服务器上键入git status(在/opt/git/inventory.git/)我得到的错误消息fatal: This operation must be run in a work tree

远程存储库似乎不包含任何来自本地存储库的文件,并且当我将远程存储库克隆到不同的本地文件夹时,没有文件,只有.git文件夹。

我已经看过其他相关的问题就在这里:

fatal: This operation must be run in a work tree

Why am I getting the message, "fatal: This operation must be run in a work tree?"

Getting “fatal: This operation must be run in a work tree?” on bare repository

,但我,为什么发生这种情况不清晰,我能做些什么来补救它。

+0

阅读“裸”存储库。根据定义,“裸”存储库没有工作树,没有检出文件。这是预期的行为。 – 2015-02-09 14:40:32

回答

5

有问题的远程存储库是bare repository

它只会包含git内部存储的打包对象和引用等,并且不会检出任何常规代码文件。因此,将没有工作树,因此没有工作git status

这就是说,要检查你的变化推,只是克隆的疑问,回购到另一个位置,你会发现你的文件中的所有权利:

git clone /opt/git/inventory.git some/location/inventory_clone 

你可能需要做的一个git checkout master新克隆回购实际上看到的代码文件。

+0

当我克隆存储库时,我得到以下内容:'警告:远程HEAD引用不存在的引用,无法签出.'并且在克隆的存储库中没有文件? – bordeltabernacle 2015-02-09 14:44:30

+1

@RMPhoenix克隆回购之后,执行'git checkout master'。检查[this](http://stackoverflow.com/a/15631690/1860929) – 2015-02-09 14:47:28

+1

啊!好的,谢谢,我明白了。我把本地仓库推到了远程服务器上,把它重新放回到另一个本地文件夹'inventory_clone'中,这个文件夹创建了另一个文件夹'inventory',在那个文件夹中我用'git branch -a'来查看那里有哪些分支,然后' git checkout'在我想要的分支上,那里的文件是。谢谢你,我会更深入地阅读Git,我想我需要更好地理解它在这里从根本上做了什么。 – bordeltabernacle 2015-02-09 15:10:11