1、Wins安裝Git+Trtoisegit工具實現版本克隆與推送php
Git: https://git-scm.com/html
Tortoisegit: https://tortoisegit.org/download/ 下載程序和語言包進行漢化操做linux
2、使用git客戶端對項目進行克隆與推送操做git
2.1. gitlab 建立一個帳戶並對該帳戶受權相應的項目權限(我這裏建立帳號爲xliang,過程省略...)web
2.2. 安裝git ,默認配置安裝apache
2.3. Git上傳下載項目ubuntu
建立一個目錄,用於存儲倉庫(項目)【也能夠右擊建立版本庫】。右擊目錄git bash herebash
先進行git global設置服務器
$ git config --global user.name "xliang"ssh
$ git config --global user.email "11922064@qq.com"
生成git客戶端的祕鑰
$ ssh-keygen
進入到c:/users/用戶/.ssh/目錄,編輯id_rsa.pub公鑰,複製公鑰信息至gitlab
(與TortoiseGit的配置同樣,我分配的帳號是xliang,登陸gitlab,設置-->祕鑰-->粘貼公鑰信息保存)
克隆和推送的URL有兩種方式:ssh和http
Git上傳祕鑰只能用於ssh方式傳輸,若是用http鏈接傳輸則提示輸入該用戶對應gitlab的帳號和密碼
舉例:用http和ssh克隆項目:
用http傳輸,輸入gitlab的帳號和密碼【我分配帳戶是xliang】
用ssh傳輸,用咱們生成的公鑰和私鑰匹配
3、用git + tortoisdgit克隆和推送項目
優勢:不用敲命令,窗口化操做
3.1 安裝git,tortoisdgit
3.2 tortoisdgit生成祕鑰
在開始菜單中找到Puttygen,用來生成ppk密鑰,耗時好久
遠程服務配置
打開Gitlab遠程服務端網頁http://xxxx.com,用本身的Git帳號登陸(我分配的帳戶是xliang)
在我的設置頁面添加上一步生成sshKey公鑰,以下圖:
爲何要上傳2次祕鑰,git的祕鑰和tortoisegit的祕鑰【由於這是兩個不一樣的工具,祕鑰是分開的,TortoiseGit只是依賴於git客戶端,git是命令行工具,tortoisegit是窗口化工具很方便】
用tortoisegit上傳下載項目
建立幾個文件,而後用tortoisegit上傳,下載測試
添加URL,祕鑰,點擊 添加覆蓋
推送有兩個步驟:
點擊,推送
成功後,關閉窗口,到gitlab看看更新的文件
4、 linux服務器安裝git 克隆版本,完成版本的迭代升級操做
案例:web工做目錄爲/var/www/auto.com,咱們能夠自定目錄/home/auto爲git倉庫
版本升級:
方法1:ln –s /home/auto /var/www/auto.com
--我在生產環境上作軟連接至web站點的目錄,好像apache2沒法讀取,具體緣由還沒分析,最後用方法2實現,採用rsync+inotify自動同步版本
把倉庫軟連接至web工做目錄,每次升級clone最新版本便可
[由於gitlab有版本迭代性,若是版本回退,直接在服務器上clong上一個版本下來便可]
方法2:clone最新版本,重命名/var/www/auto.com作備份,而後cp倉庫最新版本至web工做目錄
需求:
使用gitlab控制版本發佈
各服務器經過git 去拉去版本
[服務上的倉庫能夠軟鏈接至web的工做目錄]
[升級版本的時候,直接去拉版本便可]
服務器A,B,C,D...
一、 在gitlab上建立帳號,每一個帳號對應一個服務器,把帳號添加進對應項目裏面
二、 服務器上生成公鑰,用對應的帳號登錄gitlab,而後添加公鑰
三、 在服務器上建立一個目錄(能夠直接軟連接到web工做目錄)
四、 使用git 命令拉去版本
-------------------------------------->
ubuntu 系統示例:
一、安裝git
# apt-get install git
二、服務器配置祕鑰:
# ssh-keygen -t rsa
# pwd
/root/.ssh
# cat id_rsa.pub 把公鑰複製添加到gitlab
三、 用gitlab建立分配的帳號登錄,用戶設置-->SSH密鑰-添加公鑰
四、 建立一個目錄做於倉庫,也能夠軟連接至服務器web的工做目錄
# mkdir antu
# cd antu
# git clone ssh://git@gitlab.qiaokexing.com/cl_test/cl_test.git
Cloning into 'cl_test'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done.
Checking connectivity... done.
# ls ---查看推送下來的版本
cl_test
# ls cl_test/ ---版本已經推送下來了
index.html read.txt test2.txt test3.txt test4.txt test.php