CentOS 安裝 Git Server 共享 repository 達到多人開發環境

2015-08-09 Git

由於公司有版本控管的需求,所以藉此機會來學習 Git。Git 本身是一個分散式的架構,Git 的 repository 會在各用戶端機器上保存完整的複本,由於 Server 和 Client 都擁有一份相同的 repository,即使 Server 毀損了,也可以從用戶端的 repository 複製一份回來。

 

由於 Git 是基於本機資料庫的概念,所以在 commit 或進行版本 check 都非常快速

 

 

本篇將會從無到有的建立共享 Git repository,並示範如何建立的開發者環境

 

 

建立 Git Server

首先挑選一台要存放共享 Git repository 的 Server 來當作主要 Data Server

 

Step.1

建立 git 使用者,這將會用於 ssh 連線時所用的帳號

$ yum install git
$ adduser git

 

 

Step.2 建立不含有工作目錄的 repository

$ mkdir /home/git/new_dev
$ cd /home/git/new_dev
$ git init --bare
Initialized empty Git repository in /home/git/

$ ls
branches  config  description  HEAD  hooks  info  objects  refs

 

在這邊就完成了 Git share repository 的空資料庫建立。

 

 

 

 

Git 開發者環境建立

Step.1 建立 ssh key 以便讓開發者不需要在輸入密碼推送 git 資料

$ ssh-keygen

確認產生的公鑰
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu1vq9loQ6shuoPwCbtB9sKjoLP .....

將公鑰放入 Git Server 的 ~/.ssh/authorized_keys
$ scp ~/.ssh/id_rsa.pub git@gitserver:~/.ssh/git_key
$ cat ~/.ssh/git_key ~/.ssh/authorized_keys

 

 

Step.2 初始化本機 repository 並 clone git server 上的 repository

以 CentOS 為例

$ yum install git

建立 git 使用者識別資訊
$ git config --global user.name "John Doe" 
$ git config --global user.email johndoe@example.com

初始化含有工作目錄的 repository
$ mkdir -p /home/git/new_dev 
$ cd /home/git/new_dev 
$ git init
Initialized empty Git repository in /home/git/

因為含有工作目錄,所以 git repository 就會被丟到 .git 裡面去。
$ ls -la
.git

遠端 clone git server 上面的資料
$ git remote add origin git@gitserver:/home/git/new_dev

 

到這個步驟,在開發者與 Git Server 上已經都有一份一模一樣的 Git repository

再來測試 Git push 來證明執行正常

 

 

於開發者環境端進行測試開發 a.txt

建立 a.txt
$ cd /home/git/new_dev
$ touch a.txt

為這次開發進行 commit
$ git commit -m 'install git commit test'

推到遠端 Git Server 並且設定支線為 master
$ git push origin master

 

於 Git Server 驗證開發者的 commit

$ cd /home/git/new_dev
$ git log

你必須要可以看到開發者 commit 的訊息及時間,並且清楚看到執行的狀況。

2 Replies to “CentOS 安裝 Git Server 共享 repository 達到多人開發環境”

  1. frozen表示:

    Should never try to
    $ scp ~/.ssh/id_rsa.pub git@gitserver:~/.ssh/authorized_keys

    It will overwrite your authorized_keys quietly.

    better to scp ~/.ssh/id_rsa.pub git@gitserver:~/.ssh/xxx
    cat ~/.ssh/xxx >> ~/.ssh/authorized_keys

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱