RedHat Git伺服器安裝
安裝前準備:
需要安裝zlib,curl,rsync,libcrypto.
可以用# rpm -qa|grep zlib 命令檢查
安裝配置
1. 下載git-1.7.8.rc3.tar.gz
2. 解壓後執行
#configure --prefix=/usr/local/git
#make
#make install
3. 將/usr/local/git/libexec/git-core 和/usr/local/git/bin加入PATH
4.git軟體安裝完成後,該 建立git庫
a)#cd repos-home
#git-init-db
如果是建立bare目錄,目錄名字通常以.git結尾
#git --bare init
b)追蹤檔案
git-add 和 git-update-index
c)提交檔案
$ git-commit -a -m "new day for git"
Windows Git用戶端安裝
安裝
由於tortoiseGit是對msysgit的封裝,所以在安裝tortoiseGit前需要安裝msysgit
從http://code.google.com/p/msysgit/下載Git-1.7.4-preview20110204.exe後安裝
從http://code.google.com/p/tortoisegit下載tortoisegit.msi後安裝
選擇tortoisePlink用於與git伺服器的ssh串連,
配置ssh互連
Git用戶端與伺服器端代碼上傳必須用ssh協議,所以需要配置兩台機器支援ssh密鑰直接登陸。
a) 在Linux伺服器上建立一個git帳號,用於多人使用。
/home/git 下建立.ssh目錄(注意,是.ssh。。有個點!)
chmod 700 -R .ssh
b) 在Windows中使用c:\program files\git\bin\ssh-keygen -t rsa 產生密匙和公匙,即id_rsa 和 id_rsa.pub
c) 將id_rsa.pub 拷貝到Linux伺服器的/home/git/.ssh/中,添加到authorized_keys檔案後,如果沒有這個檔案可以如下建立:
#cat id_rsa.pub > authorized_keys
將authorized_keys 許可權改為600
修改/etc/ssh/sshd_config
RSAAuthentication yes #開啟RSA認證功能
PubkeyAuthentication yes #開啟公匙認證
AuthorizedKeysFile .ssh/authorized_keys
d) 測試是否可以不用口令登陸Linux伺服器
c:\program files\git\bin\ssh -i id_rsa root@192.168.6.131 echo $PATH
e) 轉換公開金鑰格式,以便TortoisePlink.exe 可用
執行C:\Program Files\TortoiseGit\bin\puttygen.exe, 選load按鈕載入id_rsa後,儲存
執行TortoisePlink.exe -i c:\id_pri.ppk root@192.168.6.131 echo $path 測試不需要口令登入
從伺服器clone版本庫
右鍵點擊目錄,選擇git-clone,
從伺服器端clone版本庫後,即可在工作目錄開始工作。
常見問題:
Q: 在clone時出現以下問題bash: git-upload-pack Command not found
A: 該問題是由於伺服器端環境變數PATH無法找到git-upload-pack程式。
與ssh互動登入不同,無密碼登入後.bash_profile中的環境變數沒有生效,因此需要採取以下步驟。
修改Linux上sshd進程的設定檔(一般為/etc/ssh/sshd_config,請用sshd -V確認)。增加如下配置行:
PermitUserEnvironment yes
此外在.ssh目錄下編輯組建檔案environment,內容可以考慮和.bash_profile相同,但不需要執行export
之後重啟採集機上的sshd守護進程。Kill -HUP sshd
現在再用c:\program files\git\bin\ssh -i id_rsa root@192.168.6.131 echo $PATH確認PATH環境變數是否生效。
常用命令:
初始化git資料庫
$ git-init-db
添加檔案
$ git-add hello.c
查看修改、提交記錄
$ git-log
建立分支
$ git-branch roredu
查看分支
$ git-branch
* master
roredu
切換工作分支
$ git-checkout roredu
Switched to branch "roredu"
$ git-branch
master
* roredu
提交到當前工作分支並書寫標記。
$ git-commit -a
建立xux分支對於master的補丁檔案。
$ git-format-patch master roredu
配置開發人員自己的簽名和email。
$ git-config --global user.name "roredu"
$ git-config --global user.email "roredu@gmail.com"
修改檔案名稱
$ git-mv roredu.c helight.c
刪除檔案
$ git-rm roredu.c
合并:
切換到master,再選擇Merge
如何clone版本庫
cd /slview
git clone root@localhost:/slview/git-repos git-workhome
錯誤:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
解答:
[root@localhost code]# ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
錯誤:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
解決:
用git --bare init 建庫