2017-06-17 29 views
1

假設我已經有一個遠程服務器。該項目保存在/var/www/html/project。它已經有一些文件和文件夾。然後,我想使用從本地機器到該服務器的git進行部署。問題是,我如何實現這一目標?使用現有項目的Git自動部署

如果我使用git bare --init,它必須是服務器上的空文件/文件夾,對不對?如果在服務器中文件已經存在?謝謝。

回答

0

如果你想推送到GitHub,那麼你的服務器Git倉庫不必是裸露的。
只有當你想推送到你的服務器時,它應該是裸露的。

確保您的用戶名和電子郵件設置第一

git config --global user.name ausername 
git config --global user.email [email protected] 

您可以通過創建您的服務器上啓動現在(外/var/www/html,避免混帳回購協議本身由您的Apache Web服務器提供)回購

cd /a/path 
git init arepo 
cd arepo 
git --work-tree=/var/www/html/project add . 
git commit -m "First project import" 

一旦做到這一點,你可以克隆回購作爲裸回購:

cd /a/path 
git clone --bare arepo 
# generates a repo.git folder 

(注意,我假設你的GitHub庫創建完全是空的)如果你的服務器有ssh守護進程運行

,你有誰可以訪問/a/path/repo.git的用戶帳戶,您可以在本地做:

cd /a/local/path 
git clone [email protected]:/a/path/arepo.git 
cd arepo 

您現在已在您的計算機上使用本地代碼。

更改後,您可以推回。但是如果您想要更改(推送到服務器裸回購),您也可能需要post-receive hook,以便在/var/www/html中顯示。

+0

謝謝你的回答。但實際上,我想將我的本地代碼(在我的筆記本電腦上)推送到服務器,而不是github。現在,我的本地代碼是空的,我希望它可以用來自該服務器的現有項目填充(git pull)。之後,我在本地做的每一個變化,我都可以推送到服務器。我怎樣才能做到這一點? –

+0

謝謝!很有幫助。但是最後一個問題,'post-receive'文件中有什麼?我在'arepo.git'目錄中創建了這些行: '#!/ bin/sh git --work-tree =/var/www/html/project --git-dir =/a/path/ispo.git checkout -f'和'chmod + x'該文件。 但是當我推送更改時,服務器上沒有任何更改。 –

+0

[更新]一切正常。我編輯了接收後的文件。非常感謝你。 –