2010-08-19 74 views
4

我有2個Web服務器,一個測試和一個生活。兩者都有用git管理的代碼庫。如何推送到遠程的當前git分支,並立即反映更改?

我在測試服務器上開發,然後將測試服務器上的主分支上的更改推送到帶有git push的活動服務器。但是,此刻我必須登錄到實時服務器並運行git reset --hard,以便將更改反映到實時代碼中。

當我按下建議時,會顯示警告消息建議更改receive.denyCurrentBranch的設置以更改此推送的處理方式。然而,據我所知,我可以讓它拒絕推送,接受它的警告,並要求git reset,或接受它沒有任何警告,並要求git reset。我可以接受推不是需要重置?

謝謝!

回答

6

這聽起來像是你推入一個非裸回購(也就是說,有一個副本的回購文件在磁盤上籤出)。你可以推入它,但Git不會自動更新沒有git reset(或git checkout)的工作副本文件。您可以使用post-receive hook自動完成檢查,但有一個很好的方法可用here

+0

創建後接收鉤非常好,謝謝! – marxjohnson 2010-08-24 07:50:01

0

mipadi是正確的,你真的需要一個裸回購從你的生產服務器拉。如果你對post-commit鉤子不熟悉(很多人不是)。您可以在該服務器上創建一個cron作業,每隔半小時左右運行 git pull來源主設備 。

+0

一個cron作業並不能完全解決我的問題 - 我仍然只想將更改推送到顯式命令的實時服務器上。 也許在cron作業上運行'git reset --hard'可能會起作用,但鉤子似乎是更優雅的解決方案。 – marxjohnson 2010-08-24 07:56:43

+0

是的,當然,鉤是最好的方式去。有些人因寫作而感到恐懼,所以我想展示一種替代良品的方法 – brycemcd 2010-08-26 22:33:05

相關問題