Git服務器倉庫的搭建和客戶端使用方法

環境說明:linux

一、fedora21  桌面系統  二、已經配置好yum倉庫
git

1、安裝gitshell

# yum install gitvim

1.1 建立git用戶

建立git帳戶並登陸,直接指定用戶目錄到/home/gitwindows

# useradd git -d /home/git -m -s /bin/bash# su git安全

添加用戶 user add
-d:指定用戶目錄
-m:若是目錄不存在則建立
-s:能夠指定用戶使用的命令 bash

2、建立sample庫

建立庫很簡單,注意使用--bare參數。做爲代碼倉庫服務器並不會在上面修改東西,因此只要有相關提交日子就能夠。服務器

$ cd ~app

$ git init --bare sample.gitssh

3、設置SSH Key

收集客戶端公鑰,複製到服務器上。 客戶端當前帳號RSADSA的數字簽名文件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上能夠直接使用gitTortoiseGit獲取。

git@192.168.10.14:/home/git/sample.git

新建一個文件並提交到服務器上。在服務器上經過git log就能看到第二提交的內容。mac客戶機上git pull能看到剛纔新加的文件。

這樣Git服務器倉庫功能基本完成。

4、安全問題

爲安全考慮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.

5、數據倉庫遷移

上面的狀況是空倉庫,若是原來已經有在使用的倉庫,想遷移到新倉庫。

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’。直接右擊當前目錄,進入SettingsRemote中地址替換掉。沒裝就用上Git自帶的,使用上面命令替換。

相關文章
相關標籤/搜索