git是一個不錯的版本管理的工具。現在自己在搞一個簡單的應用程序開發,想使用git來進行管理。在Google了配置文檔后,還是受了N多的挫折。某些文檔質量不高,浪費了好多時間......
好,切入正題:
安裝必要的git工具
#apt-get install git git-core
centos linux 下載git
# wget https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.gz
備注:安裝時可能會遇到若干問題:
1.編譯缺少lib,使用yum安裝
2.沒有設置prefix,不知道安裝到那里
3.安裝完成直接執行git無反應,需要建立軟連接
make prefix=/usr/local all doc
make prefix=/usr/local install install-doc
wget http://git-core.googlecode.com/files/git-1.7.10.tar.gz
tar zxvf git-1.7.10.tar.gz
cd git-1.7.10
./configure --prefix=/usr/local/git
make
make install
git依賴zlib-devel,openssl-devel,perl,cpio,expat-devel,gettext-devel這些包,如果出錯基本上也是這些包造成的。我在安裝時出現了如下錯誤。
出現錯誤一:
usr/bin/perl Makefile.PL PREFIX='/usr/local/git' INSTALL_BASE='' --localedir='/usr/local/git/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] Error 2
make: *** [perl/perl.mak] Error 2
執行:
yum install perl-ExtUtils-MakeMaker package.
行進安裝
出現錯誤二:
/bin/sh: msgfmt: command not found
yum install gettext-devel
可解決!
Git在make的時候報錯:Can't locate ExtUtils/MakeMaker.pm in @INC
解決方法如下:
yum -y install perl-devel perl-CPAN
git 需要perl來編譯。然后重新make
Git Make時出現:tclsh failed; using unoptimized loading
MSGFMT po/bg.msg make[1]: *** [po/bg.msg] 錯誤 127
yum install tcl build-essential tk gettext
安裝之后使用https操作git 出現 :fatal: Unable to find remote helper for 'https'
yum install -y curl curl-devel
然后重新安裝 git
安裝之后 git --version 仍然是舊版本(1.7.12)
git 安裝時不使用--prefix指定安裝目錄,默認安裝到/usr/local/bin/git ,需要把/usr/local/bin/git 復制或者ln到 /usr/bin/git
為了省時間,你可以利用各distribution的包管理工具來一鍵安裝。若是條件允許,從源代碼安裝有很多好處,至少可以安裝最新的版本。Git 的每個版本都在不斷嘗試改進用戶體驗,所以能通過源代碼自己編譯安 裝最新版本就再好不過了。有些 Linux 版本自帶的安裝包更新起來並不及時,所以除非你在用最新的 distro 或者 backports,那么從源代碼安裝其實該算是最佳選擇。
Git 的工作需要調用 curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。在有 yum 的系統上(比如 Fedora)或者有 apt-get 的系統上(比如 Debian 體系),可以用下面的命 令安裝:
0. Git安裝前環境配置:
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
1. Git下載源:
http://git-scm.com/downloads(official website)
http://code.google.com/p/git-core
https://github.com/git/git (大陸的朋友建議使用后倆個源下載)
2. 解壓縮包並進入Git目錄:
$ sudo tar zxf git-1.8.0.tar.gz
$ cd git-1.8.0
3. 編譯源碼:
$ sudo make prefix=/usr/local/git all doc
// 這里同時指定all和doc這兩個目標,指定doc是為了安裝git的幫助文檔到man手冊里面,只指定all的話,默認並不包含git的幫助文檔,這樣在man手冊中就查不到git的幫助。
*********************************************************************
在編譯all目標時,可能會報下面的錯:
/bin/sh: curl-config: not found
fatal error: openssl/ssl.h: No such file or directory
這是因為git源碼需要的一些開發包沒有被安裝。我是通過安裝下面的包來解決這個問題的:
$ sudo yum install libcurl4-openssl-dev
網上有個方法是安裝libssl-dev包,這個方法可以解決 fatal error: openssl/ssl.h: No such file or directory 的問題,但是/bin/sh: curl-config: not found問題還是存在,編譯的時候還是編不過。在我的 機子上,安裝libcurl4-openssl-dev能同時解決這兩個問題,安裝libcurl4-openssl-dev時,會自動安裝libssl-dev包。
在編譯doc目標時,可能會報下面的錯:
/bin/sh: line 1: asciidoc: command not found
這個包可以到這里下載並執行make(./configure ;make ;make install)常用方法安裝http://sourceforge.net/projects/asciidoc
/bin/sh: line 1: xmlto: command not found
xmlto這個包不太好找,不過有adam在,這些都是浮雲(呵呵)。下載地址:https://fedorahosted.org/releases/x/m/xmlto/,安裝方法同asciidoc。
************************************************************************
4. 安裝:
$ sudo make prefix=/usr/local/git install install-doc
// 這里同樣,如果想要在man手冊中看到git的幫助文檔,需要額外安裝,即上面的install-doc。如果只指定install目標的話,在man手冊中是查不到git的相關命令幫助的。
5. 查看新安裝的git版本號:
$ ./usr/local/git/bin/git --version
git version 1.8.0
6. 為了以后使用方便,我們這里做一個軟連接:
$ ln -s /usr/local/git/bin/* /usr/bin/
=================================================
極速安裝git最新版(update 20131209):
$ git clone git://git.kernel.org/pub/scm/git/git.git
$ make prefix=/usr/local all (編譯)
$ sudo make prefix=/usr/local install (安裝)
=================================================
安裝好了以后,進行設置
1. 創建一個git目錄
#mkdir /git
#cd /git/
#mkdir myproject
2. 創建一個空的git倉庫
#git-init-db
3. 創建工程的文件
# echo "My test project" > test.txt
* 此步很重要,如果要在遠程clone這個project, 這個project必須是非空的,否則會失敗。
4. 使用git命令添加並提交新的文件
#git-add test.txt
#git-commit -m "Init"
至此,本地的git 倉庫就創建好了。想要在遠程clone這個project,還需要使用git-daemon
5. 安裝git-daemon-run. git-daemon-run實際是一個腳本管理工具,用來啟動git-daemon.
#apt-get install git-daemon
6. 配置git-daemon-run
#vi /etc/sv/git-daemon/run
可以看到
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -m64000000 /
git-daemon --verbose --base-path=/var/cache /var/cache/git
將最后一句的git-daemon修改為
git-daemon --verbose --export-all --base-path=/git/
* 這里,我加上了一個--export-all.看下man手冊就可以知道,使用該選項后,在git倉庫中就不必創建git-daemon-export-ok文件。如果不使用該選項,則在第4步還需要創建該文件,即
#touch git-daemon-export-ok
7.使用git-daemon-run工具重啟git-daemon,干脆重啟下系統
8. 從client導出server(192.168.35.69)上的myproject
git-clone git://192.168.35.69/myproject