使用心得如下:
git有個(gè)hooks功能拷泽,每次push提交代碼的時(shí)候夹姥,可以觸發(fā)遠(yuǎn)程服務(wù)器上的hooks,執(zhí)行shell。 利用這個(gè)功能婶溯,每次在本地寫(xiě)好內(nèi)容鲸阔,直接push到遠(yuǎn)程服務(wù)器上偷霉,就可以根據(jù)寫(xiě)好的shel自動(dòng)部署了。用起來(lái)相當(dāng)方便褐筛,下面就記錄下配置過(guò)程:
一类少、在遠(yuǎn)程服務(wù)器上創(chuàng)建代碼倉(cāng)庫(kù)(Linux)
# mkdir -p /home/www/project.git
# chmod 777 /home/www
# cd /home/www/project.git
# git init --bare //創(chuàng)建一個(gè)裸倉(cāng)庫(kù)
# useradd -s /bin/bash git //因?yàn)樾枰獔?zhí)行shell,把shell指定成/usr/bin/git-shell 或/sbin/nogin 無(wú)法使用git hooks來(lái)更新blog
# chown git:git -R /home/www/project.git
二、配置本地?zé)o密碼登錄遠(yuǎn)程服務(wù)器(win)
# ssh-keygen // 一路回車
然后復(fù)制生成的key(當(dāng)前用戶下的.ssh/id_rsa.pub)
切換到Linux
# mkdir -p /home/git/.ssh
# vim /home/git/.ssh/authorized_keys //把上面復(fù)制的key粘貼進(jìn)去渔扎,后保存退出
# chown git:git -R /home/git/.ssh
# chmod 600 /home/git/.ssh/authorized_keys //權(quán)限不要出錯(cuò)
# chmod 755 /home/git/.ssh
三硫狞、本地初始化git,并且添加遠(yuǎn)程倉(cāng)庫(kù)(win)
# d: //進(jìn)入D盤(pán)
# mkdir -p project
# cd project
# git init
# git config user.email "wzp@qq.com"
# git config user.name "wzp"
# echo "1111" > 1.txt
# git add 1.txt
# git commit -m "add 1.txt"
# git remote add blog ssh://git@127.0.0.1:22/home/www/project.git //添加遠(yuǎn)程倉(cāng)庫(kù)還沒(méi)有提交過(guò)晃痴,所以要先提交一次. 注意ssh后面有://
# git push blog master //提交到主干
git remote add <分支名> <遠(yuǎn)程地址> //上面的blog 就是分支残吩,這個(gè)可以隨便自定義
如果git remote add 加錯(cuò)了,可以使用 git remote rm <分支名> 來(lái)刪掉:
# git remote rm blog
//以后使用這個(gè)克隆就行了
//git clone ssh://git@127.0.0.1:22/home/www/project
//ssh協(xié)議倘核,后面是 用戶@地址:端口/目錄
四泣侮、添加hooks
# cd /home/www/project.git/hooks
# vim post-receive
#!/bin/sh
#
PATH=$PATH:/usr/local/python27/bin
GIT_WORK_TREE=/home/www/newproject git checkout -f
cd /home/www/newproject && make html >/dev/null 2>&1
chmod +x post-receive
chown git:git -R /home/www/newproject
注意:寫(xiě)hooks的時(shí)候要特別注意環(huán)境變量問(wèn)題。
錯(cuò)誤記錄:
文件沖突
# git push blog master
> error: failed to push some refs to 'ssh://git@127.0.0.1/home/www/project'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
這個(gè)是因?yàn)槟惚镜氐拇a和git遠(yuǎn)程倉(cāng)庫(kù)的代碼出現(xiàn)了沖突 解決辦法:
1.先把遠(yuǎn)程文件拉下來(lái)紧唱,再push
# git config branch.master.remote blog
# git config branch.master.merge refs/heads/master
# git pull blog master
# git push blog master
2.強(qiáng)制更新
# git push -f blog master
//注意活尊,會(huì)覆蓋遠(yuǎn)程倉(cāng)庫(kù)上的文件,慎用
以上步驟就能解決了漏益。
再來(lái)說(shuō)說(shuō)如果服務(wù)器上已經(jīng)有項(xiàng)目的話如何快速git到本地蛹锰,首先進(jìn)入Liunx中項(xiàng)目根目錄把項(xiàng)目拉取到服務(wù)器git倉(cāng)庫(kù)
# cd /home/wwwroot/newproject //進(jìn)入項(xiàng)目目錄
# git init
# git add .
# git config user.email "test@qq.com"
# git config user.name "test"
# git commit -m "first up"
# git status
# git remote add tests git@127.0.0.1:22/home/www/project.git
# git push tests master
服務(wù)器git倉(cāng)庫(kù)拉取完成之后再在win用git工具把項(xiàng)目拉取下來(lái)。
sourcetree 圖形Git工具 https://www.sourcetreeapp.com/