簡體   English   中英

推送到Bare git repo之后為什么我看不到文件

[英]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-receiveupdate鈎子 - 在所有推送上運行,因此它應檢查有問題的推送是否“有趣”(影響自動部署分支) )),如果是,則觸發部署。

鈎子是代表執行推送的進程運行的(通常是ssh作為某些用戶,就像你的git remote -v輸出一樣),所以如果部署的文件應該由另一個用戶擁有,你必須以某種方式安排。 一種簡單,簡單且合理的方法是寫入設置為模式的文件rw-rw-rw- (每個人都可寫),並且有一些東西(例如cron作業)定期檢查文件。 如果編寫,作為部署用戶運行的cron作業可以提取相應分支的最新版本。 另一種方法是聯系執行此操作的服務器(木偶等)。

如果執行推送的用戶( user@xx.xx.xx )可以擁有這些文件,那么更簡單的方法是在鈎子中運行git checkout ,但是使用--bare沒有其他連接的備用工作樹回購。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM