1. ä¸é¢æ们以ubuntu server为ä¾ï¼ä»ç»ä¸ä¸å¦ä½ä½¿ç¨Gitæ¥ç®¡ç项ç®ä»£ç ï¼å¹¶ä¸é¨ç½²ä»£ç çwebç«ç¹ç®å½ã
2. 1. åå¤å·¥ä½ï¼
1å°æ¥æSSHæéçæå¡å¨ ï¼LNMP,git,sshå®è£
é
ç½®ï¼
ä¸å°è£
ægit客æ·ç«¯çPC (æ¬æå®é
å¨windowsä¸çmsysgitæä½)
3. LNMP,git,sshå®è£
é
ç½®
# å®è£
LNMP$ wget -c
http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./ubuntu.sh# å®è£
Git ssh$ sudo apt-get install git git-core ssh
windowsä¸å®è£
msysgit
4. 2.å¨ä½ çwebæå¡å¨ä¸å»ºç«git裸ä»åºãç¼åhooksã导å
¥ç¨æ·å
¬é¥ã设置ç®å½æé
å¨æå¡å¨ä¸å»ºç«ä¸ä¸ªç¨æ·ï¼è¿éå½å为gitï¼ä¿®æ¹gitçå¯ç ï¼å¹¶ç¦ç¨shellç»å½
$ sudo useradd git# ä¿®æ¹gitçå¯ç $ passwd git# ç¦ç¨shellç»å½$ sudo vi /etc/passwdä¿®æ¹git:x:1001:1001:,,,:/home/git:/bin/bash为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
è¿æ ·ï¼gitç¨æ·å¯ä»¥æ£å¸¸éè¿ssh使ç¨gitï¼ä½æ æ³ç»å½shellï¼å 为æ们为gitç¨æ·æå®çgit-shellæ¯æ¬¡ä¸ç»å½å°±èªå¨éåºã
åå§åGitä»åºï¼å»ºç«git 裸ä»åºï¼è®¾ç½®hookèæ¬ï¼webç®å½éè¦gitç¨æ·ææéï¼å¦ågitçhookèæ¬å°æ²¡æåæ³æ§è¡æä½ï¼
$ cd /opt $ mkdir git$ cd git$ sudo git init --bare demosite.git# æ件夹æé$ sudo chown -R git:git demosite.git$ cd /demosite.git/hooks$ sudo vi post-receiveåå
¥ä»¥ä¸å
容#!/bin/shGIT_WORK_TREE=/home/wwwroot/
www.demosite.com git checkout -f# åå
¥æé$ chmod +x post-receive# 建ç«webç®å½ï¼å¦æç®å½ä¸åå¨ï¼gitä¸ä¼å建ç®å½ç$ mkdir /home/wwwroot/
www.demosite.com -p# webç®å½çæ件夹æé$ sudo chown -R git:git /home/wwwroot/
www.demosite.com å建è¯ä¹¦ç»å½
æ¶éææéè¦ç»å½çç¨æ·çå
¬é¥ï¼å°±æ¯ä»ä»¬èªå·±çid_rsa.pubæ件ï¼æææå
¬é¥å¯¼å
¥å°/home/git/.ssh/authorized_keysæ件éï¼ä¸è¡ä¸ä¸ªã
客æ·ç«¯ç¨æ·è¯ä¹¦çæ请åèä¸æã
5. 3.å¨git客æ·ç«¯çæå
¬é¥ã导å
¥æå¡å¨ãcoding ãaddãcommitãpush
çæå
¬é¥ï¼å¯¼å
¥æå¡å¨
$ ssh-keygen -t rsa -C "
[email protected]"ä¸è·¯å车æè
设置å¯ç windowsä¸åæ示å¨åªéçæäºå¯é¥windows8ä¸æ示å¨C:\Users\username\.ssh ä¸ï¼linuxçè¯ä¼å¨~/.sshä¸è¿å
¥ç®å½ï¼æå¼id_rsa.pubï¼å¤å¶éé¢çkeyï¼æ·»å å°ä¸ææå°çwebæå¡å¨ç/home/git/.ssh/authorized_keyséã
clone coding add commit push
$ git clone git@serverip:/opt/git/demosite.gitCloning into 'demosite'...warning: You appear to have cloned an empty repository.$ cat 'hello world!' > index.html$ git add index.html$ git commit -m'first commit'$ git remote add origin ssh://git@serverip:/opt/git/demosite.git$ git push origin master
è¿é使ç¨å
¬é¥æ¥åæééªè¯ï¼è¿è¡gitéçhookçèæ¬æé为gitç¨æ·çæéï¼å½ç¶ä½ ä¹å¯ä»¥ä½¿ç¨èªå·±å¨serverä¸çç¨æ·æ¥è¿è¡gitæä½ï¼åé¢å¯¹äºgitç¨æ·çæä½å客æ·ç«¯å
¬é¥ççæåå¯ä»¥çç¥ï¼å¨gitä¸èæ¬çæ§è¡æéåæ¯ä½ ç»å½ç¨æ·çæéï¼ç¸åºçoriginç设置åºè¯¥ä¸º:
$ git remote add origin ssh://yourusername@serverip:/opt/git/demosite.git
è¿æ¶åæ¯æ¬¡pushå°éè¦è¾å
¥å¯ç éªè¯ã
忽ç¥æäºæ件
ä½ å¯ä»¥å¨ä½ ç顶å±å·¥ä½ç®å½ä¸æ·»å ä¸ä¸ªå«".gitignore"çæ件ï¼æ¥åè¯Gitç³»ç»è¦å¿½ç¥ æåªäºæ件ï¼ä¸é¢æ¯æ件å
容ç示ä¾:
使"git add ." å"git commit -a" åå¾å®é
å¯ç¨ã
# 以'#' å¼å§çè¡ï¼è¢«è§ä¸ºæ³¨é.# 忽ç¥ææææ件åæ¯ foo.txt çæ件.foo.txt# 忽ç¥ææçæç html æ件,*.html# foo.htmlæ¯æ工维æ¤çï¼æ以ä¾å¤.!foo.html# 忽ç¥ææ.o å .aæ件.*.[oa]#Eclipse.settings/*.buildpath.project