2013-10-01 119 views
3

我有我的本地開發商回購(產地)和遠程回購,我創建使用git init --barerecommended here。我也跑git --bare update-server-info爲什麼我看不到文件後,推到裸git回購

git config --bool core.bare true 

遠程Git -v顯示

origin http://staging.websitename.com (fetch) 

origin http://staging.websitename.com (push) 

remote ssh://[email protected]/home/user/public_html/staging (fetch) 

remote ssh://[email protected]/home/user/public_html/staging (push) 

在此之後和運行git推遠程或混帳推 - 所有遙控器,它通過並沒有給我的錯誤。爲什麼我看不到遠程回購中的文件?

Compressing objects: 100% (4121/4121), done. 
Writing objects: 100% (4242/4242), 18.70 MiB | 694 KiB/s, done. 
Total 4242 (delta 495), reused 0 (delta 0) 

回答

7

裸存儲庫沒有工作副本,所以您不會「看到」任何文件。嘗試做一個git日誌,你可以看到提交。從裸回購克隆,你會得到文件。

+0

謝謝,我以爲裸回購是理想的回購,只會被推到,所以我打算用它作爲登臺服務器(所以當然需要查看文件,我應該克隆本地回購,而不是我不需要完整的git樹嗎? – KevinOrin

+0

@KevinOrin:你應該將你的運行階段版本與裸倉庫分開,因爲推送到非裸倉庫有很多問題,你可以用'git pull'運行從裸倉庫中的更新後鉤子 –

+0

謝謝,但不認爲我需要一個裸回購@BenjaminBannier - 我只是想知道如何設置分級,因爲過去一個簡單的「git init」已經導致當我試圖推送到它的樹問題 – KevinOrin

2

--bare回購的要點是它沒有工作副本(也沒有索引),這意味着沒有什麼東西可以通過推送而搞亂。

如果您希望某些推送(對一個或多個特定分支)「自動部署」,實現此目的的方法是在--bare回購庫中使用git鉤子。鉤一般post-receive,雖然它可以使用pre-receiveupdate鉤這裏,是在所有推動運行,所以應該檢查有問題的推是否是「有趣」(影響自動部署分支(ES)) ,如果是,則觸發部署。

掛鉤代表進程正在執行推送(通常是ssh,因爲某些用戶,因爲在您的git remote -v輸出中),所以如果部署的文件應該由另一個用戶擁有,則必須以某種方式安排。一種簡單,簡單且合理的方法是寫入文件,該文件設置爲rw-rw-rw-(每個人都可寫)模式,並且有某些內容(例如cron作業)定期檢查文件。如果寫入,則作爲部署用戶運行的cron作業可以提取最新版本的相應分支。另一種方法是聯繫服務器(puppet等)來做這件事。

如果做推([email protected]),用戶可以根據自己的文件,一個更簡單的方法是運行在鉤git checkout,但with an alternate work-tree具有與--bare回購沒有其他連接。

相關問題