2012-02-02 29 views
2

可能重複:
Git Post-Receive Hook for Website Staging瀏覽網站後生活的Git推

我今天開始學習Git和我被困在一兩件事上。

當我將本地生產存儲庫推送到遠程臨時存儲庫時,我希望立即能夠實時查看我新推入的文件。當我嘗試在遠程存儲庫(通過FTP客戶端)查找我的文件時,找不到它們。

我是否需要執行一些高級Git魔術才能實現此目標(掛鉤?)?這種情況的最佳做法是什麼?

再一次,我是Git的新手,並沒有完全理解這個概念。也許值得注意的是,我使用Webfaction Git application作爲遠程存儲庫。

編輯:我看到this topic SO,我知道如何創建一個post-commit鉤子,但我不知道應該在shell腳本中放什麼。

回答

2

首先,你不想使用post-commit鉤子 - 這是一個客戶端鉤子。你想要的服務器端鉤子將被接收或更新(取決於你是否使用分支機構)。

請參見:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

在你掛機腳本,你應該CHDIR到服務器的根目錄,並運行一個git拉。此外,在腳本的頂部,請確保包含

unset GIT_DIR 

否則git會在您嘗試拉動時自行混淆。

1

假設你創建一個 後提交 後收到BASH的機器上或更新掛鉤,嘗試這樣的事情:

#!/bin/bash 

cd /your/git/repository/directory 
git checkout -f 

...

一對夫婦的注意事項:

  • 有關正在發生的事情的信息。推送到遠程存儲庫時,git不會自動檢出新代碼。所以,提交後的鉤子需要檢查分支上的最新代碼。
  • 您可能需要告訴服務器上的git存儲庫允許您推送到檢出分支。在該服務器上的git回購運行此命令應該做的伎倆:

    git config receive.denycurrentbranch false