åŠ©ä½ å…¥é—¨ git 的简明指å�—,木有高深内容 ;)
创建新文件夹,打开,然�执行
git init
以创建新的 git 仓库。
执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository
如果是远端æœ�åŠ¡å™¨ä¸Šçš„ä»“åº“ï¼Œä½ çš„å‘½ä»¤ä¼šæ˜¯è¿™ä¸ªæ ·å�:
git clone username@host:/path/to/repository
ä½ çš„æœ¬åœ°ä»“åº“ç”± git ç»´æŠ¤çš„ä¸‰æ£µâ€œæ ‘â€�组æˆ�ã€‚ç¬¬ä¸€ä¸ªæ˜¯ä½ çš„ 工作目录,它æŒ�有实际文件;第二个是 æš‚å˜åŒºï¼ˆIndex),它åƒ�个缓å˜åŒºåŸŸï¼Œä¸´æ—¶ä¿�å˜ä½ 的改动;最å�Žæ˜¯ HEAD,它指å�‘ä½ æœ€å�Žä¸€æ¬¡æ��交的结果。
ä½ å�¯ä»¥æ��å‡ºæ›´æ”¹ï¼ˆæŠŠå®ƒä»¬æ·»åŠ åˆ°æš‚å˜åŒºï¼‰ï¼Œä½¿ç”¨å¦‚下命令:
git add <filename>
git add *
这是 git 基本工作æµ�程的第一æ¥ï¼›ä½¿ç”¨å¦‚下命令以实际æ��交改动:
git commit -m "代ç �æ��交信æ�¯"
çŽ°åœ¨ï¼Œä½ çš„æ”¹åŠ¨å·²ç»�æ��交到了 HEADï¼Œä½†æ˜¯è¿˜æ²¡åˆ°ä½ çš„è¿œç«¯ä»“åº“ã€‚
ä½ çš„æ”¹åŠ¨çŽ°åœ¨å·²ç»�在本地仓库的 HEAD ä¸äº†ã€‚执行如下命令以将这些改动æ��交到远端仓库:
git push origin master
å�¯ä»¥æŠŠ master æ�¢æˆ�ä½ æƒ³è¦�推é€�的任何分支。
å¦‚æžœä½ è¿˜æ²¡æœ‰å…‹éš†çŽ°æœ‰ä»“åº“ï¼Œå¹¶æ¬²å°†ä½ çš„ä»“åº“è¿žæŽ¥åˆ°æŸ�个远程æœ�åŠ¡å™¨ï¼Œä½ å�¯ä»¥ä½¿ç”¨å¦‚ä¸‹å‘½ä»¤æ·»åŠ ï¼š
git remote add origin <server>
如æ¤ä½ å°±èƒ½å¤Ÿå°†ä½ çš„æ”¹åŠ¨æŽ¨é€�åˆ°æ‰€æ·»åŠ çš„æœ�务器上去了。
分支是用æ�¥å°†ç‰¹æ€§å¼€å�‘ç»�缘开æ�¥çš„ã€‚åœ¨ä½ åˆ›å»ºä»“åº“çš„æ—¶å€™ï¼Œmaster 是“默认的â€�分支。在其他分支上进行开å�‘,完æˆ�å�Žå†�将它们å�ˆå¹¶åˆ°ä¸»åˆ†æ”¯ä¸Šã€‚
创建一个��“feature_x�的分支,并切�过去:
git checkout -b feature_x
切�回主分支:
git checkout master
å†�æŠŠæ–°å»ºçš„åˆ†æ”¯åˆ æŽ‰ï¼š
git branch -d feature_x
除é�žä½ 将分支推é€�到远端仓库,ä¸�然该分支就是 ä¸�为他人所è§�的:
git push origin <branch>
è¦�æ›´æ–°ä½ çš„æœ¬åœ°ä»“åº“è‡³æœ€æ–°æ”¹åŠ¨ï¼Œæ‰§è¡Œï¼š
git pull
ä»¥åœ¨ä½ çš„å·¥ä½œç›®å½•ä¸ èŽ·å�–(fetch) å¹¶ å�ˆå¹¶ï¼ˆmerge) 远端的改动。
è¦�å�ˆå¹¶å…¶ä»–åˆ†æ”¯åˆ°ä½ çš„å½“å‰�分支(例如 master),执行:
git merge <branch>
在这两�情况下,git 都会�试去自动�并改动。�憾的是,这�能并��次都�功,并�能出现冲�(conflicts)。
这时候就需è¦�ä½ ä¿®æ”¹è¿™äº›æ–‡ä»¶æ�¥æ‰‹åЍå�ˆå¹¶è¿™äº›å†²çª�(conflicts)。改完之å�Žï¼Œä½ 需è¦�æ‰§è¡Œå¦‚ä¸‹å‘½ä»¤ä»¥å°†å®ƒä»¬æ ‡è®°ä¸ºå�ˆå¹¶æˆ�功:
git add <filename>
在å�ˆå¹¶æ”¹åЍ之å‰�ï¼Œä½ å�¯ä»¥ä½¿ç”¨å¦‚下命令预览差异:
git diff <source_branch> <target_branch>
为软件å�‘å¸ƒåˆ›å»ºæ ‡ç¾æ˜¯æŽ¨è��的。这个概念早已å˜åœ¨ï¼Œåœ¨ SVN ä¸ä¹Ÿæœ‰ã€‚ä½ å�¯ä»¥æ‰§è¡Œå¦‚下命令创建一个å�«å�š 1.0.0 çš„æ ‡ç¾ï¼š
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff æ˜¯ä½ æƒ³è¦�æ ‡è®°çš„æ��交 ID çš„å‰� 10 ä½�å—符。å�¯ä»¥ä½¿ç”¨ä¸‹åˆ—命令获å�–æ��交 ID:
git log
ä½ ä¹Ÿå�¯ä»¥ä½¿ç”¨å°‘一点的æ��交 ID å‰�å‡ ä½�,å�ªè¦�它的指å�‘具有唯一性。
å�‡å¦‚ä½ æ“�作失误(当然,这最好永远ä¸�è¦�å�‘ç”Ÿï¼‰ï¼Œä½ å�¯ä»¥ä½¿ç”¨å¦‚下命令替æ�¢æŽ‰æœ¬åœ°æ”¹åŠ¨ï¼š
git checkout -- <filename>
æ¤å‘½ä»¤ä¼šä½¿ç”¨ HEAD ä¸çš„æœ€æ–°å†…容替æ�¢æŽ‰ä½ 的工作目录ä¸çš„æ–‡ä»¶ã€‚å·²æ·»åŠ åˆ°æš‚å˜åŒºçš„æ”¹åЍ以å�Šæ–°æ–‡ä»¶éƒ½ä¸�会å�—到影å“�。
å�‡å¦‚ä½ æƒ³ä¸¢å¼ƒä½ åœ¨æœ¬åœ°çš„æ‰€æœ‰æ”¹åŠ¨ä¸Žæ��交,å�¯ä»¥åˆ°æœ�务器上获å�–最新的版本历å�²ï¼Œå¹¶å°†ä½ 本地主分支指å�‘它:
git fetch origin
git reset --hard origin/master
内建的图形化 git:
gitk
彩色的 git 输出:
git config color.ui true
显示历�记录时,�个�交的信��显示一行:
git config format.pretty oneline
交互å¼�æ·»åŠ æ–‡ä»¶åˆ°æš‚å˜åŒºï¼š
git add -i