雖然這是相當古老,它是非常灰心,推到一個工作樹。 https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
更好的方法是創建一個裸露的回購鏡像網站的工作樹。
所有裸回購是,是沒有工作樹或沒有檢出文件的存儲庫。層次結構存在所有考慮事項並可以檢出。換句話說,它只能作爲主機進行更改。
不知道你與你的網站,我會承擔它的工作目錄層次是利用chroot的家 一個標準的網站佈局EG:/ home/user中/ WWW
使用SSH與服務器安裝的git:
創建當前網站的工作樹
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
從本地系統創建一個純倉庫到遠程推
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
鏈接你的工作樹庫和裸露的部署庫
cd /home/user/public_html
git remote add deploy /home/user/deploy.git
git remote show deploy
* remote deploy
URL: /home/user/deploy.git
git push deploy master
現在成立了一個新的回購您的本地系統上
git clone ssh://[email protected]/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
現在我們設置2鉤立即更改您的網絡遠程回購當你推動它或如果別人你給予訪問推動它。由於混帳配置receive.denyCurrentBranch不理會帶來麻煩,從長遠來看
在遠程服務器上啓用部署更新後的
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
更改您的post-update掛鉤到以下和保存
#!/bin/sh
echo "Pulling changes into public_html [deploy post-update]"
cd /home/user/public_html || exit
unset GIT_DIR
git pull deploy master
exec git update-server-info
現在,我們設置您的Web工作樹,以推動其部署的更改,如果有事情承諾它。
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
然後改變post-commit鉤子以下
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
你還有如果你需要檢出您的網絡工作樹的選項。 當您推送本地系統的主服務器時,這將允許您將更改從部署部署到Web的工作樹。 您可以在不影響網絡工作樹的情況下分支,重新綁定,還原等,而不用擔心衝突標記,而只需使用裸露的部署存儲庫。 如果您需要更多控制承諾的內容,則可以使用post-receive而不是更新後的版本。
希望這可以幫助別人尋找和OP一樣的東西。
嗯,我所需要的一切都是recieve.denyCurrentBranch。謝謝:) – yasar
@ yasar11732,請務必閱讀有關保持工作目錄最新的注意事項。沒有它,你推動的變化將反映在Git的歷史記錄中,但不一定是你的網站的檢出分支。 – shelhamer
phew,這對我來說是一項艱鉅的工作,但仍然將其取消。謝謝! – yasar