首先cmd里ssh命令登入服務器
Windows7用戶cmd沒有ssh命令的 openSSH官網(wǎng)下載安裝 →
# 10.10.10.10為服務器ip
$ ssh root@10.10.10.10
# 輸入密碼
1、安裝git
$ yum install git
$ git --version
# 接下來創(chuàng)建一個git(自己新建的用戶名)用戶組和用戶(后面會解釋為什么要新建一個用戶)钮科,用來運行g(shù)it服務:
$ groupadd git
$ adduser git -g git
$ passwd git
注意:git版本太低裤园,可能會導致后續(xù)問題。Git_2.9.2 進行編譯安裝教程 →
2泻肯、創(chuàng)建證書登錄
收集所有需要登錄的用戶的公鑰,公鑰位于id_rsa.pub文件中,把公鑰導入/home/git/.ssh/authorized_keys文件里渊迁,一行一個。如果沒有該文件創(chuàng)建它
git 安裝及配置參考
$ cd /home/git/
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
3灶挟、初始化Git倉庫
首先我們選定一個目錄作為Git倉庫琉朽,假定是/home(可自行創(chuàng)建文件目錄,但不能是系統(tǒng)根目錄或者是其他用戶目錄稚铣,當前我們創(chuàng)建的用戶為git)箱叁, 輸入以下命令:
$ cd /home
# Git命令創(chuàng)建一個空倉庫,服務器上的Git倉庫通常都以.git結(jié)尾惕医。
$ git init --bare code.git
# 將code.git目錄的擁有者(用戶組)設為 git 群體的使用者 git (用戶)
$ chown -R git:git code.git
4耕漱、克隆倉庫
# 此時可以在客戶端測試,試試用我們新建的git用戶來登錄(10.10.10.10 為 Git 所在服務器 ip)
git clone git@10.10.10.10:/home/code.git #可能需要輸入git用戶密碼
# 或者root用戶登錄
git clone root@10.10.10.10:/home/code.git #此時輸入root密碼
別去試push抬伺,現(xiàn)在上傳后服務器是沒有那個文件的螟够,只要提示不報錯就算這一步成功了(一般會提示版本庫為空什么的)。
注意:此時如果是下載的包編譯安裝的可能會報錯(沒有報錯就略過)
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
什么原因呢峡钓?
原來代碼服務器【10.10.10.10】上的git安裝路徑是/usr/local/git妓笙,不是默認路徑,根據(jù)提示能岩,在git服務器10.10.10.10上寞宫, 建立鏈接文件
[root@localhost code]# ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
當然,如果無法修改git代碼服務器上配置拉鹃,可以在clone時淆九,添加--upload-pack選項來指定git服務器上的git-upload-pack 路徑统锤,達到上面相同的目的,如下所示:
[root@localhost code]$ git clone --upload-pack "/usr/local/git/bin/git-upload-pack" git@10.10.10.10:/home/code.git
后續(xù)可能上傳文件或者下拉文件等可能會出現(xiàn)類似的git-receive-pack 等錯誤炭庙,和以上同理(比如以下幾個常用的)
5饲窿、禁止git用戶shell登錄
剛剛創(chuàng)建的用戶作用來了,如果你只想這個用戶被用來當做git上傳代碼焕蹄,你可以執(zhí)行以下操作
vi /etc/passwd
修改git的bash 從 /bin/bash 改為 /usr/bin/git-shell
6逾雄、設置git鉤子
進入我們的裸倉庫的hooks文件夾,然后新建一個post-receive文件腻脏。
$ cd hooks/
$ vi post-receive
在post-receive寫入以下*兩行*內(nèi)容:
#!/bin/bash
git --work-tree=/www/project checkout -f
# 其中/www/project為你實際需要同步的站點目錄鸦泳。
# 然后修改post-receive為可執(zhí)行文件(其實這就是一個腳本文件)
$ chmod +x post-receive
# post-receive的原理就是,當遠程倉庫發(fā)現(xiàn)有用戶執(zhí)行了push操作永品,就會執(zhí)行一個腳本post-receive(鉤子)做鹰。其實git還提供了很多其它動作的鉤子,這里我們就不深入了解了鼎姐。
# 注意:同時你還需要修改你的web站點目錄的權(quán)限钾麸,修改所屬用戶與用戶組為git,否則鉤子的權(quán)限可能會不足而導致執(zhí)行失敗炕桨。#(你也可以通過添加git用戶到相應的用戶組來解決問題)
$ chown git:git -R /www # 修改所屬用戶
7饭尝、大功告成
設置好鉤子后,當你本地再次執(zhí)行push的時候献宫,你會發(fā)現(xiàn)你web目錄的文件也同步的更新了钥平。
客戶端常用git命令
# 首次使用git需要你配置一個全局的用戶名和郵箱,"John doe"為自定義的用戶名
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
# 可以通過以下命令查看自己配置的屬性
$ git config --get user.name
$ git config --get user.email
# origin是目標地址 dir是下載到哪個目錄下 master為自己的分支
# 下載
$ git clone origin dir
# 上傳
$ git push origin master
# 下拉
$ git pull origin master
# 查看遠程倉庫名稱
$ git remote
# 查看遠程倉庫地址
$ git remote get-url origin
# 設置遠程倉庫地址別名
$ git remote add origin git@10.10.10.10:/home/code.git # 如果未設置ssh-key姊途,此處倉庫地址為 http://... 開頭
# 刪除本地倉庫當前關聯(lián)的遠程倉庫
$ git remote rm origin
# 忽略上傳文件或目錄
根目錄創(chuàng)建 .gitignore 文件寫文件名或者目錄
# 強制覆蓋遠程倉庫
$ git push --force origin master
# 刪除遠程倉庫的版本庫
$ git push origin :master
喜歡 關注 評論
↓ ↓ ↓