一、安裝GIT核心html
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc gcc-c++ -y
wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
tar -zvxf git-2.0.0.tar.gz 解壓
進入git解壓目錄,而後配置、安裝:python
autoconf
./configure --with-curl=/usr/local make sudo make install
報錯c++
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale' Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3. BEGIN failed--compilation aborted at Makefile.PL line 3. make[1]: *** [perl.mak] 錯誤 2 make: *** [perl/perl.mak] 錯誤 2
看起來應該是perl的問題,perl-version發現perl已經安裝了,google一把,是perl的一個包的問題,參見右邊解決了:http://my.oschina.net/indestiny/blog/223082git
yum install perl-ExtUtils-MakeMaker package
而後繼續 make && make installgithub
安裝後顯示信息:shell
make[1]: Leaving directory `/usr/local/git-2.0.0/git-gui' bindir=$(cd '/usr/local/bin' && pwd) && \ execdir=$(cd '/usr/local/libexec/git-core' && pwd) && \ { test "$bindir/" = "$execdir/" || \ for p in git git-shell git-upload-pack git-cvsserver; do \ rm -f "$execdir/$p" && \ test -z "" && \ ln "$bindir/$p" "$execdir/$p" 2>/dev/null || \ cp "$bindir/$p" "$execdir/$p" || exit; \ done; \ } && \ for p in git-receive-pack git-upload-archive; do \ rm -f "$bindir/$p" && \ test -z "" && \ ln "$bindir/git" "$bindir/$p" 2>/dev/null || \ ln -s "git" "$bindir/$p" 2>/dev/null || \ cp "$bindir/git" "$bindir/$p" || exit; \ done && \ for p in git-add git-annotate git-apply git-archive git-bisect--helper git-blame git-branch git-bundle git-cat-file git-check-attr git-check-ignore git-check-mailmap git-check-ref-format git-checkout-index git-checkout git-clean git-clone git-column git-commit-tree git-commit git-config git-count-objects git-credential git-describe git-diff-files git-diff-index git-diff-tree git-diff git-fast-export git-fetch-pack git-fetch git-fmt-merge-msg git-for-each-ref git-fsck git-gc git-get-tar-commit-id git-grep git-hash-object git-help git-index-pack git-init-db git-log git-ls-files git-ls-remote git-ls-tree git-mailinfo git-mailsplit git-merge git-merge-base git-merge-file git-merge-index git-merge-ours git-merge-recursive git-merge-tree git-mktag git-mktree git-mv git-name-rev git-notes git-pack-objects git-pack-redundant git-pack-refs git-patch-id git-prune-packed git-prune git-push git-read-tree git-receive-pack git-reflog git-remote git-remote-ext git-remote-fd git-repack git-replace git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-send-pack git-shortlog git-show-branch git-show-ref git-stripspace git-symbolic-ref git-tag git-unpack-file git-unpack-objects git-update-index git-update-ref git-update-server-info git-upload-archive git-var git-verify-pack git-verify-tag git-write-tree git-cherry git-cherry-pick git-format-patch git-fsck-objects git-init git-merge-subtree git-show git-stage git-status git-whatchanged; do \ rm -f "$execdir/$p" && \ test -z "" && \ ln "$execdir/git" "$execdir/$p" 2>/dev/null || \ ln -s "git" "$execdir/$p" 2>/dev/null || \ cp "$execdir/git" "$execdir/$p" || exit; \ done && \ remote_curl_aliases="git-remote-https git-remote-ftp git-remote-ftps" && \ for p in $remote_curl_aliases; do \ rm -f "$execdir/$p" && \ test -z "" && \ ln "$execdir/git-remote-http" "$execdir/$p" 2>/dev/null || \ ln -s "git-remote-http" "$execdir/$p" 2>/dev/null || \ cp "$execdir/git-remote-http" "$execdir/$p" || exit; \ done && \ ./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"
而後查看一下:app
[root@bxcs_repository local]# git usage: git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>] 最經常使用的 git 命令有: add 添加文件內容至索引 bisect 經過二分查找定位引入 bug 的變動 branch 列出、建立或刪除分支 checkout 檢出一個分支或路徑到工做區 clone 克隆一個版本庫到一個新目錄 commit 記錄變動到版本庫 diff 顯示提交之間、提交和工做區之間等的差別 fetch 從另一個版本庫下載對象和引用 grep 輸出和模式匹配的行 init 建立一個空的 Git 版本庫或從新初始化一個已存在的版本庫 log 顯示提交日誌 merge 合併兩個或更多開發歷史 mv 移動或重命名一個文件、目錄或符號連接 pull 獲取並整合另外的版本庫或一個本地分支 push 更新遠程引用和相關的對象 rebase 本地提交轉移至更新後的上游分支中 reset 重置當前HEAD到指定狀態 rm 從工做區和索引中刪除文件 show 顯示各類類型的對象 status 顯示工做區狀態 tag 建立、列出、刪除或校驗一個GPG簽名的 tag 對象 命令 'git help -a' 和 'git help -g' 顯示可用的子命令和一些指南。參見 'git help <命令>' 或 'git help <指南>' 來查看給定的子命令幫助或指南。 [root@bxcs_repository local]# git --version git version 2.0.0
安裝成功了。ssh
二、安裝openssl等(執行了最上面的腳本的話就不用了)curl
yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel
三、安裝python setuptools包fetch
yum install python python-setuptools
四、用咱們剛剛安裝的git下載gitosis並安裝:
下載 git clone git://github.com/res0nat0r/gitosis.git 進入 cd gitosis/ 用剛安裝的python 安裝gitosis python setup.py install
顯示以下信息就說明安裝成功了:
creating /usr/lib/python2.6/site-packages/gitosis-0.2-py2.6.egg Extracting gitosis-0.2-py2.6.egg to /usr/lib/python2.6/site-packages Adding gitosis 0.2 to easy-install.pth file Installing gitosis-init script to /usr/bin Installing gitosis-run-hook script to /usr/bin Installing gitosis-serve script to /usr/bin Installed /usr/lib/python2.6/site-packages/gitosis-0.2-py2.6.egg Processing dependencies for gitosis==0.2 Searching for distribute==0.6.10 Best match: distribute 0.6.10 Adding distribute 0.6.10 to easy-install.pth file Installing easy_install script to /usr/bin Installing easy_install-2.6 script to /usr/bin Using /usr/lib/python2.6/site-packages Finished processing dependencies for gitosis==0.2
五、本地生成key,公鑰上傳到server上:
ssh-keygen -t rsa -C "xxxx@xxxxx"
一路回車,把is_rsa.pub公鑰上傳到server的tempKeys目錄上。
六、在Server上新建git管理員用戶,初始化:
adduser git # 新增一個git用戶
su - git # 切換git用戶
[git@bxcs_repository gitosis]$ gitosis-init <tempPubKeys/id_rsa.pub 初始化空的 Git 版本庫於 /home/git/repositories/gitosis-admin.git/ 從新初始化現存的 Git 版本庫於 /home/git/repositories/gitosis-admin.git/
上面的初始化,已經將本地公鑰初始化到gitosis中,本地機器成爲管理員權限機器。
必須以git用戶初始化,不然後來clone gitosis-admin.git時會有問題,必須輸密碼!(主要是倉庫地址要放在/home/git/repositories/gitosis-admin.git/,而不是/home/repositories/gitosis-admin.git/)
七、本地下載管理端項目gitosis-admin:
在本地下載server上的管理端gitosis-admin到目錄/usr/local/gitosis-admin下:
git clone git@192.168.3.30:gitosis-admin.git
而後看看配置文件:
Administrator@HG-20140421APSR /usr/local/gitosis-admin $ cat gitosis.conf [gitosis] [group gitosis-admin] #組名 writable = gitosis-admin #項目名 members = Administrator@HG-20140421APSR #團隊成員名(必須和密鑰名一致),多個用空格隔開
密鑰通通放在下面這個目錄中:
$ ls keydir/ Administrator@HG-20140421APSR.pub
九、新建項目:
PS:若是有新加入的成員,須要生成公鑰發給管理員。管理員將新的公鑰放在管理項目gitosis-admin的這個目下,而後再上面的conf中配置好權限,commit、push下這個項目到git Server就OK了。以下:
先加權限:
先在gitosis.conf中添加以下分組、成員信息:
[group bxcs] writable = bxcs members = xxx@xxx Administrator@HG-20140421APSR
而後在keydir中添加公鑰
提交到admin項目:
git add . git commit -m "修改權限,建立XXXX項目" git push
初始化項目:
進入咱們的項目工做空間
#初始化 git init git add . git commit -m "初始化項目" #而後提交! git remote add origin git@192.168.X.XX:bxcs.git git push origin master
或者用下面一行提交:
git push git@192.168.x.xx:bxcs.git master
OK
搭建過程參考了:
http://zwm-xl.blog.sohu.com/170050241.html
http://blog.sina.com.cn/s/blog_904dee7f0101gait.html
http://blog.csdn.net/ice520301/article/details/6142503