[英]Why don't I see files after push to Bare git repo
我有我的本地dev repo(origin)和一個我使用git init創建的遠程倉庫 -就像這里推薦的那樣 。 我還運行了git --bare update-server-info
git config --bool core.bare true
Git remote -v顯示
origin http://staging.websitename.com (fetch)
origin http://staging.websitename.com (push)
remote ssh://user@xx.xx.xx/home/user/public_html/staging (fetch)
remote ssh://user@xx.xx.xx/home/user/public_html/staging (push)
在此之后並運行git push remote或git push -all remote,它會通過並且沒有錯誤。 為什么我看不到遙控器上的文件?
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)
裸存儲庫沒有工作副本,因此您不會“看到”任何文件。 嘗試做一個git日志,你可以看到提交。 從裸倉庫克隆,你會得到文件。
--bare
repo的關鍵點在於它沒有工作副本(也沒有索引),這意味着沒有什么可以通過推送搞砸了。
如果您希望某些推送(到一個或多個特定分支)進行“自動部署”,那么實現這種情況的方法是在--bare
repo中使用git hook。 鈎子 - 通常post-receive
,雖然可以在這里使用pre-receive
或update
鈎子 - 在所有推送上運行,因此它應檢查有問題的推送是否“有趣”(影響自動部署分支) )),如果是,則觸發部署。
鈎子是代表執行推送的進程運行的(通常是ssh作為某些用戶,就像你的git remote -v
輸出一樣),所以如果部署的文件應該由另一個用戶擁有,你必須以某種方式安排。 一種簡單,簡單且合理的方法是寫入設置為模式的文件rw-rw-rw-
(每個人都可寫),並且有一些東西(例如cron作業)定期檢查文件。 如果編寫,作為部署用戶運行的cron作業可以提取相應分支的最新版本。 另一種方法是聯系執行此操作的服務器(木偶等)。
如果執行推送的用戶( user@xx.xx.xx
)可以擁有這些文件,那么更簡單的方法是在鈎子中運行git checkout
,但是使用與--bare
沒有其他連接的備用工作樹回購。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.