git 伺服器搭建和管理

2021-06-18 03:07:04 字數 4030 閱讀 6216

注意:

使用ssh協議的時候,庫的路徑可以是絕對路徑

使用git協議的時候,必須搭建gitosis管理,且庫的路徑是相對於/home/git/repositories庫的家目錄的

/home/git/repositories 可以是其他目錄的軟鏈結

1. 安裝git

# apt-get install git

# sudo addusr git

# mkdir /home/git/.ssh

# chown git:git /home/git/.ssh

# chown -r git:git /opt/git/

# chown -r git:git /home/git/*

# su git           //切換到git初始化,後面都是以git使用者登入操作的

# ssh-keygen

# touch /home/git/.ssh/authorized_keys

將允許使用者的公鑰配置到.ssh目錄下的authorized_keys檔案     --- 這樣就能使用ssh協議獲取和提交**了

2.  git 許可權管理配置gitosis  --即git協議環境的搭建

a.  安裝gitosis

# apt-get install python-setuptools

# git clone git:

或者: git clone

# cd gitosis

# sudo python setup.py install

# mv /home/git/.ssh/authorized_keys /home/git/.ssh/authorized_keys.bak  -- 必須做,因為gitosis會有自己的authorized_keys,當存在這個檔案的時候,這個檔案會生效,導致gitosis 配置的git協議不生效,只能使用ssh協議加絕對路徑訪問

# ssh-copy-id -i ~/.ssh/id_rsa.pub  git@server_ip   這個操作會自動生成authorized_keys,千萬別操作

b. 配置許可權管理倉庫    

gitosis 預設的倉庫家目錄預設在/home/git/repositories,如果需要更預設倉庫的家目錄路徑,只要給他們直接建立軟鏈結即可.(假設我們的庫家目錄指統一定在/opt/git)

# ln -s /opt/git /home/git/repositories

c. 匯入具有配置許可權管理倉庫的管理員的公鑰  (只有被匯入公鑰的使用者,才能操作許可權管理倉庫,其他使用者的公鑰只要放在許可權管理倉庫的kerdir下即可)

# sudo -h -u git gitosis-init < /home/git/.ssh/id_dsa.pub

//# sudo chmod 755 /opt/git/gitosis-admin.git/hooks/post-update

d. 啟動sshd服務

# sudo apt-get install openssh-server

# /etc/init.d/ssh start

# netstat -tnlp |grep ssh

e. 新增git使用者

# git clone git@gitserver:gitosis-admin.git

copy 使用者的公鑰到keydir下面,並在gitosis.conf新增使用者許可權陣列等資訊

# git push

3. 新增工程倉庫

a. 不存在基礎專案時:       

# cd /opt/git

# mkdir  project.git

# cd project.git

# git init --bare

b. 在已有專案上建立倉庫

# git clone --bare my_project my_project.git

# scp -r my_project.git [email protected]:/opt/git

c. 新增專案到gitosis

#vim 

-------

[gitosis]

loglevel=debug                        --- 除錯級別,可以看~/.gitosis日誌

[group write]

writable = ics mboot

members = scott josie jessica

[group read]

readonly = ics mboot

members = john

-------

d. 為倉庫新增新分支:   -- 直接clone下來再新增分支,再提交,這樣會出現問題,因為庫裡面沒有分支供合併你提交的內容

在客戶端:

# mkdir  project

# cd project

# git init 

# touch readme            --  需要建立一些原始檔提交,要不會報下面的錯誤

error: src refspec master does not match any.

error: failed to push some refs to '[email protected]:tv608/ics.git'

# git add .

# git remote add origin git@gitserver_ir:project.git    --- origin 為給遠端起的別名

# git push origin master                          -- 把當前分支推送為倉庫master分支

e. 開啟遠端git協議訪問控制 // 其實git clone git@gitserver_ir:project.git 這樣的格式是使用ssh登入git伺服器,是在ssh通道上面執行git協議的

# sudo apt-get install git-daemon-run

安裝後會建立下面兩個使用者

# cat /etc/passwd | grep git

gitlog:x:117:65534::/nonexistent:/bin/false

gitdaemon:x:118:65534::/nonexistent:/bin/false

# dpkg -l git-daemon-run    -- 檢視安裝包安裝了哪些檔案

# vim /etc/sv/git-daemon/run 

修改--export-all  --base-path=/opt/git    為你git 的倉庫根目錄,並新增--export-all引數

加入 --export-all 後,在git倉庫中就不必建立git-daemon-export-ok檔案。

--enable=receive-pack   加入這個引數後,客戶可以提交**更新,預設是不允許的

# sudo sv stop git-daemon

# sudo sv start git-daemon

或者:#sudo runsv git-daemon

# git clone git://serverip/project

or# git clone git://serverip/project.git

4. git 操作

新增遠端倉庫,命名為origin或者 aaa

# git remote add origin git@gitserver:project.git

向遠端倉庫origin的master分支提交更新

# git push origin master

回滾操作

# git reset 

git reset --soft/mixed/hard commit_id         取消commit

git reset –soft:回退到某個版本,只回退了commit的資訊,不會恢復到index file一

級。如果還要提交,直接commit即可。

git reset –mixed:此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到

某個版本,只保留原始碼,回退commit和index資訊

Git 搭建git伺服器

環境 ubuntu16.4 1.以root使用者登陸linux後台,執行下面的命令安裝git apt install git2.建立git使用者 adduser git3.建立倉庫目錄 su git mkdir p repository myself.git4.初始化倉庫 cd repository...

Git 搭建Git伺服器

在遠端倉庫一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。github就是乙個免費託管開源 的遠端倉庫。但是對於某些視源 如生命的商業公司來說,既不想公開源 又捨不得給github交保護費,那就只能自己搭建一台git伺服器作為私有倉庫使用。搭建git伺服器...

搭建Git伺服器

在 遠端倉庫 一節中,我們講了遠端倉庫實際上和本地倉庫沒啥不同,純粹為了7x24小時開機並交換大家的修改。github就是乙個免費託管開源 的遠端倉庫。但是對於某些視源 如生命的商業公司來說,既不想公開源 又捨不得給github交保護費,那就只能自己搭建一台git伺服器作為私有倉庫使用。搭建git伺...