我有一箇中央裸露的git存儲庫,我們所有的開發人員都推送到這個存儲庫。這是我們的起源。我使用origin來推送到一個單獨的,非空的存儲庫並覆蓋所有更改。這是一個示範區,所以當有人推到特定的分支時,我們可以立即看到變化。推送到非原產非Git存儲庫
Origin將推送到演示存儲庫,但工作文件不會更改。我有一個呼籲原點的後收到鉤:
git push -f ssh://[email protected]<host>/<path> <branch name>
然後在演示回購調用我的後收到鉤:
git fetch origin <branch name>
git reset --hard FETCH_HEAD
如果我呼籲演示箱的命令,我的工作複製更新正常。但是從接收後(在演示回購)中調用它們會導致需要手動提交的更改。我想跳過手動更新工作副本的步驟。
我知道,通過一些google-fu和stackoverflow搜索,推送到非裸存儲庫通常是不好的做法。我瞭解風險,但我希望這能夠起作用,因爲我們使用裸倉庫作爲原產地。
是否git做一些額外的檢查,以防止工作副本更新後收到?有什麼解決方法嗎?
啊,這看起來很有希望。在post-receive中調用fetch似乎確實很愚蠢......因爲我已經推送了代碼。使用抓取是我嘗試了大量其他組合而沒有運氣的最新嘗試。謝謝,我會放棄這一點。 – gnew
就是這樣,非常感謝你的幫助。我們運行的是舊版本的git,因此我無法使用單獨的工作樹啓動回購。我可能會手動移動工作樹,以便我們擁有您所描述的裸回購。儘管如此,指定'--work-tree'選項正是我所缺少的。謝謝! – gnew