注意:
使用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伺...