2015-02-09 425 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