2013-02-08 80 views
1

我試圖改變我的工作流並開始使用git而不是ftp。我選擇Tower來管理我的本地存儲庫。我在我的服務器上創建了一個裸機,並通過塔克隆它。到現在爲止還挺好。當我提交併推送我的更改時,我的文件不更新(我通過FTP打開它們,但它們沒有更改)。所以我刪除了我的本地存儲庫並從遠程服務器克隆,並且發生了更改,文件發生了更改。有沒有人有任何理想,爲什麼這樣呢?提前致謝。應用從git進行的更改

回答

3

您需要了解工作副本(包含簽出的文件)和回購(包含提交併在推送時更新)之間的差異。如果您想在相關存儲庫收到新提交時更新工作副本,則可能需要編寫post-receive鉤子。

+0

非常感謝您的幫助。是否有一個git命令來手動將這些更改從回購庫應用到我的工作副本中?如果有,我應該在我的回購或工作副本上運行命令嗎? – Renato 2013-02-08 19:27:59

+0

'git checkout master'或者更合適的'git checkout'命令會將工作副本更新到指定的狀態。在需要更新的工作副本中運行該命令(在您的情況下,它顯然是服務器上的工作副本,附加到您向其推送更改的回購站)。 – wRAR 2013-02-08 19:39:30

+0

我按照你的建議運行了'git pull',然後運行了'git checkout',它運行良好。萬分感謝。 – Renato 2013-02-08 20:20:12

1

我正在使用類似的方法來部署我的主頁。這裏是我的post-receive鉤看起來像:

#!/bin/sh -eu 
export GIT_DIR=/path/to/bare-git-repo 
export GIT_WORK_TREE=/path/to/working-tree 
cd "$GIT_WORK_TREE" 
git reset --hard 
git checkout 

請注意,我用的git的純倉庫本身及其工作樹單獨的目錄;如果你有.git子目錄工作樹,這應該是足夠了:

$ cat .git/hooks/post-receive 
#!/bin/sh -eu 
git checkout -f 

你也必須在一旦執行此命令接受庫側

git config receive.denyCurrentBranch ignore 

否則混帳不接受推以檢出工作樹進行回購。

+0

太棒了,完美的作品。非常感謝。 – Renato 2013-02-11 13:11:13