環境說明:
1、fedora21 桌面系統 2、已經配置好yum倉庫
一、安裝git
# yum install git
1.1 創建git用戶
創建git賬戶並登錄,直接指定用戶目錄到/home/git
# useradd git -d /home/git -m -s /bin/bash# su git
添加用戶 user add
-d:指定用戶目錄
-m:如果目錄不存在則創建
-s:可以指定用戶使用的命令
二、創建sample庫
創建庫很簡單,注意使用--bare參數。作為代碼倉庫服務器並不會在上面修改東西,所以只要有相關提交日子就可以。
$ cd ~
$ git init --bare sample.git
三、設置SSH Key
收集客戶端公鑰,復制到服務器上。 客戶端當前賬號RSA或DSA的數字簽名文件id_rsa.pub 在.ssh用戶目錄中。通常情況下windows在 %userprofile%\.ssh 目錄中,Mac在~/.ssh目錄中。
mac上可以直接使用下面命令復制粘貼板上,或使用ssh上傳
$ pbcopy < ~/.ssh/id_rsa.pub
win7上可以打開Git GUI界面有個幫助->show SSH Key菜單,如果沒創建過可以點擊創建SSH的簽名文件,並復制公鑰保存到服務器上。如果使用第三方的SSHKey服務,那可能實際位置會有些差異。
生成本地用戶的簽名文件,並把客戶端上公鑰導入到服務器上。如果有多個的話可以放在一個目錄中,方便導入。如果是團隊人比較多這種方式可能就不太適合了。
如把客戶端的key文件mymac.pub和mywin.pub導入。
$ ssh-keygen -t rsa -b 4096
$ cat mymac.pub >> ~/.ssh/authorized_keys
$ cat mywin.pub >> ~/.ssh/authorized_keys
3.1 客戶端獲取sample庫,並增加文件上傳到服務器
在Linux客戶端獲取。
$ git clone git@192.168.10.14:/home/git/sample.gitCloning into 'sample'...
warning: You appear to have cloned an empty repository.Checking connectivity... done.
獲取成功OK,增加一個文件,並提交到服務器上
$ cd sample
$ cat >> readme.md
first file.^c
$ git add .
$ git commit -m "first commit"
$ git push
3.2 服務器上查看狀態
$ git log
commit 8b070256af351b43a74753f0b05969fcfe9c7310Author: moguf <moguf_notify@163.com>Date: Sun Apr 3 20:49:17 2016 +0800
first commit
3.3 在Win客戶端獲取
windows上可以直接使用git或TortoiseGit獲取。
git@192.168.10.14:/home/git/sample.git
新建一個文件並提交到服務器上。在服務器上通過git log就能看到第二提交的內容。mac客戶機上git pull能看到剛才新加的文件。
這樣Git服務器倉庫功能基本完成。
四、安全問題
為安全考慮Git賬號只允許使用git-shell。在passwd文件中找到git用戶,把/bin/bash直接修改成/usr/bin/git-shell 登錄root賬號,並修改git的用戶權限。
$ su# vim /etc/passwd
這樣git用戶只能git-shell命令不能登錄了。
使用 su git 命令就會出現下面提示,git用戶就無法登錄到shell,這樣就OK了。
# su git
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
五、數據倉庫遷移
上面的情況是空倉庫,如果原來已經有在使用的倉庫,想遷移到新倉庫。
linux 下切換
先看一下remote的名字。
$ git remote
origin
一般可以看到origin,這個就是原來倉庫名稱。使用git remote set_url命令更換地址,如新地址是git@192.168.10.14:/home/git/sample.git
$ git pull
$ git remote set-url origin git@192.168.10.14:/home/git/sample.git
$ git push
- 獲取原來最新代碼
- 切換到新地址
- 提交當前庫內容
win7下切換
如果有裝‘TortoiseGit’。直接右擊當前目錄,進入Settings把Remote中地址替換掉。沒裝就用上Git自帶的,使用上面命令替換。
