首先安裝Windows客戶端的git和TortoiseGit。
安裝這兩個軟體還是蠻重要的,很多選項不能亂選。
為了寫個完整的部落格,我是裝了又卸,卸了又裝。
1.安裝git
下載:https://git-scm.com/
2.安裝TortoiseGit
下載 https://tortoisegit.org/download/ 別忘了中文語言包也一起下載了
當把烏龜安裝好後遇到語言選擇的介面先別動,直接安裝中文包,中文包安裝好後再繼續配置烏龜點選refresh就可以選擇中文繼續往下走。
3.安裝git
yum install git
4.建立儲存目錄(涉及路徑乃自定義,看心情。)
mkdir /var/gitdata
單給一個777許可權 以便將來用git賬號在這裡建立git倉庫
chmod 777 /var/gitdata
5.新增git使用者(其實後來我把git使用者換到了root組 還挺方便的)
groupadd git
useradd git -g git
passwd git
6.切換到git賬號
su git
7.建立專案倉庫
cd /var
mkdir gitdata/a.git
8.初始化裸倉庫
git init --bare gitdata/a.git
9.建立公鑰
ssh-keygen(按這條命令的時候直接按回車 不要輸入東西)
然後會在當前使用者也就是git使用者的家目錄裡生成一個.ssh目錄 裡面id_rsa是私鑰 id_rsa_pub是公鑰
10.切換回root
su root
vi /etc/ssh/sshd_config
開啟以下注釋:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys (指定存放公鑰的路徑是git家路徑.ssh下的authorized_keys)
11.重啟sshd服務
systemctl restart sshd.service
12.客戶端建立公鑰
在本地專案目錄中找個空目錄,點選右鍵開啟git bash
ssh-keygen(按這條命令的時候直接按回車,不要輸入東西)
此時,C:\user\使用者名稱\.ssh下會多出兩個檔案id_rsa是私鑰,id_rsa_pub是公鑰。
13.下面兩條語句客戶端和伺服器端都要執行 輸入自己github上的使用者名稱和郵箱
git config --global user.name zhao-baolin
git config --global user.email 937240319@qq.com
14.服務端存放客戶端公鑰
vi /home/git/.ssh/authorized_keys
將客戶端的公鑰檔案裡的東西全部複製進去 當然 當前目錄下的那個id_rsa.pub裡的內容也可以一股腦兒複製進來。
15.修改許可權
.ssh目錄的許可權必須為700(必須)
chmod 700 /home/git/.ssh
.ssh/authorized_keys檔案的許可權必須為600(必須)
chmod 600 /home/git/.ssh/authorized_keys
修改家目錄所有者
chown -R git:git /home/git
16.github存放服務端公鑰
開啟https://github.com/ 登陸賬號 進入設定
在SSH and GPG keys中新增Linux服務端的公鑰,title隨便填,內容把公鑰檔案裡的東西全部複製過來就行。
回到Linux 輸入以下命令:
ssh -T git@github.com
輸入yes回車 提示成功
17.檢出專案(用git的話叫做克隆專案)
切換git賬號
su git
git clone git@192.168.11.11:/var/gitdata/a.git
以上命令客戶端開啟bash輸入一遍,服務端也輸入一遍。
如果伺服器更新遇到這個錯
fatal: Couldn't find remote ref master
fatal: The remote end hung up unexpectedly
或者客戶端更新遇到這個錯
Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.
請不要慌亂 曾經我在這裡持續折騰了七個小時 網上查了個底朝天也沒查到解決辦法
最後找到原因之後 我才明白為什麼網上查不到 因為沒人有我這麼傻逼
原因是沒有找到master分支 為什麼沒有master分支呢 因為master分支是首次提交後建立的 然而我克隆了就直接pull 簡直就是腦殘 當時我只是想測試一下跑不跑得通。。。
18.一些簡單的命令
原來這裡寫了一些簡單的命令 後來我自己都懶得看 因此貼一篇比較詳細的資料在文章末尾 方便查閱
19.鉤子
切換root賬號
su root
vi /var/gitdata/shici.git/hooks/post-receive
輸入以下四行內容:
#!/usr/bin/bash
cd /var/www/a
unset GIT_DIR
git pull origin master
(第一行請自行以whereis bash查詢一下你伺服器上的bash路徑,第二行cd進專案目錄)
再給個許可權:
chmod 755 /var/gitdata/a.git/hooks/post-receive
chown git:git /var/gitdata/a.git/hooks/post-receive
這樣客戶端提交程式碼,服務端專案就可以自動更新了,前提是必須切換到git賬號手動拉取一下專案,進行一個yes授權記住密碼,否則無法自動更新。客戶端也一樣,所有的基本操作最好先用bash命令列走一圈。
20.禁止登陸shell
vi /etc/passwd
找到git使用者那一行 改為:
git:x:1001:1000::/home/git:/usr/bin/git-shell
(最後的路徑是你的伺服器上git-shell的實際路徑)
將來若要新增新倉庫
可修改/etc/passwd檔案允許git使用者登入shell
然後登入git賬號做以下操作
1. 切入倉庫目錄 cd /var/gitdata
2. 建立倉庫 mkdir b.git
3. 初始化倉庫 git init --bare b.git
4, 建立鉤子 vi /var/gitdata/b.git/hooks/post-receive
5. 輸入以下四行內容
#!/usr/bin/bash
cd /var/www/b
unset GIT_DIR
git pull origin master
6, 修改許可權 chmod 755 b.git/hooks/post-receive
7. 切進專案目錄 cd /var/www
8. 如果用的root賬號做的這些事情 那麼請一定記住把目錄所有者設定為git
chown git:git -R /var/gitdata
chown git:git -R /var/www/b
9. 克隆專案 git clone git@192.168.11.11:/var/gitdata/b.git
git命令清單:
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html