2009-05-20 65 views
2

關於git工作方式的基本問題。文件沒有顯示在遠程存儲庫

我克隆了一個回購庫,進行了一些更改,提交併將更改回推到原始回購庫。

當我做了一個git log,提交消息出現,但實際的文件不在目錄中。

他們應該在那裏嗎?

+0

這個問題的答案可以在http://git.or.cz/gitwiki/GitFaq找到(簡而言之,push不會更新工作目錄,並且不應該推到非裸存儲庫) – 2009-05-20 08:30:43

回答

3

您應該瞭解一下裸露的存儲庫與具有工作副本的存儲庫之間的區別。 Bare repos包含.git目錄(可能被稱爲「.git」),它只是存儲庫數據庫,沒有工作副本。當您想要發佈您的更改以供其他人使用時,通常會使用此類回購。我認爲官方的建議是將只有裸倉庫。

如果您推送到裸倉庫,您的文件將不會出現在任何工作副本中(當然,除了您自己的倉庫中)。但是,它們將出現在回購站中,但僅作爲數據庫對象。因此,如果您嘗試在裸回購庫中找到您的文件,您將只能找到一堆以sha1校驗和命名的管理文件和文件。

3

他們應該在.git(實際的回購)。外部文件夾不是回購站,它是一個工作目錄。

btw。該名男子網頁顯示:

說明利用當地裁判,在發送要完成給定的裁判對象

更新遠程裁判。

通過在其中設置掛鉤,您可以在每次推入存儲庫時使有趣的事情發生。請參閱git-receive-pack(1)的文檔。

+0

那麼我怎麼讓他們出現在工作目錄中呢? – 2009-05-20 07:04:55

+0

如果這是一個裸回購,你不會。沒有工作目錄供他們顯示。如果您希望他們顯示在某個工作目錄中,則需要將裸露的repo克隆到常規工作副本中。 – JesperE 2009-05-20 07:11:30

0

編輯:其實它看起來像改變你的post-update hooks是這樣做的正確方法。

如果你真的需要做到這一點,您可以:

git reset --hard 

git stash 

這可能是不推薦的方式,但會產生預期的效果。