使用Git自動更新實現(xiàn)本地一鍵推送到正式服務(wù)器項目中

使用心得如下:

git有個hooks功能,每次push提交代碼的時候,可以觸發(fā)遠程服務(wù)器上的hooks,執(zhí)行shell。 利用這個功能,每次在本地寫好內(nèi)容,直接push到遠程服務(wù)器上,就可以根據(jù)寫好的shel自動部署了。用起來相當方便,下面就記錄下配置過程:

一、在遠程服務(wù)器上創(chuàng)建代碼倉庫(Linux)

# mkdir -p /home/www/project.git
# chmod 777 /home/www
# cd /home/www/project.git
# git init --bare             //創(chuàng)建一個裸倉庫
# useradd -s /bin/bash git   //因為需要執(zhí)行shell,把shell指定成/usr/bin/git-shell 或/sbin/nogin 無法使用git hooks來更新blog
# chown git:git -R /home/www/project.git

二、配置本地?zé)o密碼登錄遠程服務(wù)器(win)

# ssh-keygen   // 一路回車

然后復(fù)制生成的key(當前用戶下的.ssh/id_rsa.pub)

切換到Linux

# mkdir -p /home/git/.ssh
# vim /home/git/.ssh/authorized_keys  //把上面復(fù)制的key粘貼進去,后保存退出
# chown git:git -R /home/git/.ssh
# chmod 600 /home/git/.ssh/authorized_keys //權(quán)限不要出錯
# chmod 755 /home/git/.ssh

三、本地初始化git,并且添加遠程倉庫(win)

# d:                    //進入D盤
# 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   //添加遠程倉庫還沒有提交過,所以要先提交一次. 注意ssh后面有://
# git push blog master   //提交到主干
git remote add <分支名> <遠程地址>  //上面的blog 就是分支,這個可以隨便自定義
如果git remote add 加錯了,可以使用 git remote rm <分支名> 來刪掉:
# git remote rm blog
//以后使用這個克隆就行了
//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 

注意:寫hooks的時候要特別注意環(huán)境變量問題。

錯誤記錄:

文件沖突

# 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.

這個是因為你本地的代碼和git遠程倉庫的代碼出現(xiàn)了沖突 解決辦法:
1.先把遠程文件拉下來,再push

# git config branch.master.remote blog
# git config branch.master.merge refs/heads/master
# git pull blog master
# git push blog master

2.強制更新

# git push -f blog master  
//注意,會覆蓋遠程倉庫上的文件,慎用

以上步驟就能解決了。

再來說說如果服務(wù)器上已經(jīng)有項目的話如何快速git到本地,首先進入Liunx中項目根目錄把項目拉取到服務(wù)器git倉庫

# cd /home/wwwroot/newproject  //進入項目目錄
# 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倉庫拉取完成之后再在win用git工具把項目拉取下來。

sourcetree 圖形Git工具 https://www.sourcetreeapp.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容