°æ±¾¹ÜÀí»ù±¾ÉÏÊǶàÈËÐ×÷¿ª·¢Öбز»¿ÉÉٵŤ¾ß£¬³£Óõİ汾¹ÜÀí¹¤¾ßÓУºsvnºÍgit¡£ËäÈ»¶¼ÓпÉÊÓ»¯µÄ¹¤¾ß°ïÖúÎÒÃÇʹÓÃÕâЩ¹¤¾ß£¬È»¶øµ±ÄãÓÃÉÏÃüÁîÐÐÖ®ºó£¬ÎÒÏëÄã»áÑ¡ÔñÅׯúÕâЩ¿ÉÊÓ»¯¹¤¾ß¡£ÏÂÃæÊÇÎÒÕûÀíµÄһЩ³£ÓõÄsvnºÍgitÃüÁî¡£

Svnƪ
Ê×ÏÈÄã¿ÉÒÔͨ¹ýsvn help/hÀ´²é¿´°ïÖúÐÅÏ¢¡£
¿ªÊ¼¹¤×÷
¼ì³ö(checkout)·þÎñÆ÷Êý¾Ýµ½±¾µØ
Äã¸ÕÈëÖ°Ò»¼Ò¹«Ë¾£¬»òмÓÈëij¸öÍŶӣ¬Á¢Âí²ÎÓëµ½Ò»¸öÏîÄ¿ÖУ¬ÄÇô¾ÍµÃ»ñÈ¡ÏîÄ¿´úÂ룬¿ªÊ¼ÄãµÄÏîÄ¿ÉúÑÄ¡£Õâ¸öʱºòÒ»°ãÄãÐèÒª¼ì³öÏîÄ¿´úÂ룺
svn checkout/co
[directory] project(±¾µØÄ¿Â¼Ãû£¬¿ÉÑ¡)
// ¼ì³ö°æ±¾3
svn checkout/co ¨Crevision/r 3 [directory] project(±¾µØÄ¿Â¼Ãû£¬¿ÉÑ¡) |
½Ó×ÅÄã¾Í¿ÉÒÔͨ¹ýsvn infoÀ´²é¿´°æ±¾ÐÅÏ¢ÁË¡£
µ¼Èë(import)ÏîÄ¿
ÓÐʱºòÏîÄ¿ÉÐδ´´½¨£¬ÄãÐèÒª½«±¾µØµÄĿ¼·Åµ½SVN°æ±¾²Ö¿âÖУº
svn import project(±¾µØÄ¿Â¼Ãû)
[directory] |
È»ºó¿ÉÒÔͨ¹ýsvn list/lsÈ·ÈÏÒѾÔÚ°æ±¾²Ö¿âÖÐÁË¡£
¸üÐÂ
ÿ´ÎÄ㿪ʼ±àÂëǰ£¬Äã¶¼×îºÃÏȸüÐÂϱ¾µØµÄ¹¤×÷Ŀ¼£º
cd project
svn update/up
// ¸üе½°æ±¾3
svn update/up ¨Crevision/r 3 |
ÕâÑùÄã¾Í¿ÉÒÔÔÚеÄÏîÄ¿´úÂë»ù´¡ÉϹ¤×÷ÁË¡£
ÐÞ¸Ä
¿ÉÄÜÄãдÁËÒ»¸öеÄÄ£¿é£¬Ôö¼ÓÁËһЩеÄÎļþ£¬ÐèÒªÄÉÈëÏîÄ¿µÄ°æ±¾¿ØÖÆ£º
svn add index.html
list.html ... |
¿ÉÄÜÄã·¢ÏÖij¸öÄ£¿éÒѾ³Â¾ÉÁË£¬²»ÔÙʹÓÃÁË£º
svn delete/del/remove/rm
hello.html |
¿ÉÄÜÄã·¢ÏÖÒ»¸öÄ£¿éµÄÃüÃû²»Ì«ºÏÀí£¬ÐèÒª¸ÄÃû£º
svn move/mv
main.css common.css |
¿ÉÄÜÄãÒª´´½¨Ò»¸öеĽϴóµÄÄ£¿é£¬ÐèÒªÐÂÔöĿ¼£º
¿ÉÄÜÄã·¢ÏÖҪдµÄÄ£¿é´úÂëËÆÓھɵÄÄ£¿é£¬Ö±½Ó¸´ÖÆÕû¸ö´úÂ룺
svn copy/cp
users/list.js list/list.js |
¼ì²é
æµµÄÒ»Ìì¹ýÈ¥ÁË£¬»òÕßÒ»¸öÈÎÎñÍê³ÉÁË£¬Õâ¸öʱºòÒ»°ã»á½«ÄãµÄ¹¤×÷³É¹û£¬Ò²¾ÍÊÇ´úÂë¸üе½°æ±¾²Ö¿â¡£
ϰ¹ßÉÏ»áÏȼì²éÏÂÐÞ¸Ä״̬£º
¿´µ½Ò»Ð©SVN״̬λÐÅÏ¢£¬È·ÈÏÊÇÐÞ¸ÄÁËÄÄЩÎļþ£¬Ö®ºóÒ»°ã»á×Ô¼ºcode reviewһϴúÂëµÄ¸Ä¶¯£¬¿ÉÄÜÓеÄÈË»áϰ¹ßÖ±½ÓÓÃSVN·½Ê½À´²é¿´£º
svn diff/di
folder(±¾µØÄ¿Â¼Ãû£¬¿ÉÑ¡£¬Ä¬Èϵ±Ç°Ä¿Â¼)
// ²é¿´index.htmlµ±Ç°°æ±¾ºÍ°æ±¾3µÄ²î±ð
svn diff/di ¨Crevision/r 3 index.html
// ²é¿´index.html°æ±¾3ºÍ°æ±¾4µÄ²î±ð
svn diff/di ¨Crevision/r 3:4 index.html |
Ò»°ãÀ´ËµÕâ¸öʱºò£¬Ã»ÓÐÊ²Ã´ÌØÊâÇé¿ö£¬¾ÍÖ±½Ó½øÈë¡°Ìá½»¡±½×¶ÎÁË£¬È»ºó½áÊøÒ»¸ö¹¤×÷ÈÕ»ò¹¤×÷ÖÜÆÚ£¬µ«ÄÑÃâ»áÓÐÐ©ÌØÊâÇé¿ö³öÏÖ¡£
È¡ÏûÐÞ¸Ä
µ±Äãcode reviewÍêºó£¬·¢ÏÖÓÐЩ¸Ä¶¯²»ÂúÒ⣬Äã¿ÉÄÜÓÖ»áÈ¡ÏûÕâЩÐ޸ģº
svn revert index.html
// »Ø¹öÕû¸öĿ¼
svn revert . -R/--recursive |
·ÖÖ§²Ù×÷
´´½¨·ÖÖ§
´´½¨Ò»¸ö·ÖÖ§
svn copy/cp
svn://xxx.com/repo/trunk svn: //xxx.com/repo/branches/test
-m ' make branch test ' |
°Ñ¹¤×÷Ŀ¼תµ½·ÖÖ§
svn switch/sw
svn://xxx.com/repo/branches/test |
µ±È»£¬Ò²¿ÉÒÔÔÙתµ½Ö÷¸Ésvn switch/sw svn://xxx.com/repo/trunk¡£
¸ø·ÖÖ§´ò±êÇ©
¸´ÖÆ×îÐµķ¢²¼·Ö֧Ϊ±êÇ©£º
svn copy/cp
svn://xxx.com/repo/branches/test svn://xxx.com/repo/tags/test_tag |
ºÏ²¢Ò»¸ö·ÖÖ§µ½Ö÷¸É
²éÕÒµ½·ÖÖ§°æ±¾
cd branches/test(·Ö֧Ŀ¼)
svn log ¨Cstop-on-copy |
×îºóÒ»¸ör11340¾ÍÊÇ´´½¨·Ö֧ʱµÄreversion£¬Ò²¿É£º
cd trunk(Ö÷¸ÉĿ¼)
svn -q ¨Cstop-on-copy svn://xxx.com/repo/branches/test(·ÖÖ§url) |
ÕâÌõÃüÁî»á²éѯ³ö×Ô´´½¨·ÖÖ§ÒÔºó·ÖÖ§ÉϵÄËùÓÐÐ޸ģ¬×îÏÂÃæµÄÄǸö°æ±¾ºÅ¾ÍÊÇÎÒÃÇÒªÕҵİ汾ºÅ¡£
ºÏ²¢µ½Ö÷¸É
cd trunk£¨Ö÷¸ÉĿ¼£©
svn merge -r 11340(·ÖÖ§°æ±¾):HEAD svn://xxx.com/repo/branches/test(·ÖÖ§url) |
Á½¸ö·ÖÖ§ºÏ²¢
¼ÙÉè99ÊÇ´Ó¾ÉÖ÷¸ÉÒý³ö£¬100´òÍêtag£¬±íʾÊÇÐÂÖ÷¸É¡£
ºÏ²¢×îдúÂëµÄÒâ˼ÊÇ£º½«ÐÂÖ÷¸ÉÓë¾ÉÖ÷¸É±È¶Ô£¬²¢Ìí¼Óµ½99ÖС£ÕâÑù99¼ÈÓÐ×Ô¼ºµÄÐÂÔöµÄ´úÂ룬ҲͬʱÓÐ×îÐÂÏßÉϵĴúÂë¡£
cd 99_Branch
svn merge svn://xxx.com/repo/tags/project_Old_BL
svn://xxx.com/repo/tags/project_New_BL
svn ci -m 'merge 100 trun |
µ«ÊǺóÀ´£¬ÆäËûÈËÓÖÏò100ÌáÁË´úÂ룬ËùÒÔ»¹ÐèÒª½«100·ÖÖ§£¨¼´´òÁËtagºóµÄ100£¬´òÁËtagǰµÄ100ÒÑÊÇÖ÷¸É£©ºÏ²¢ÖÁ99ÖС£
ºÏ²¢°ì·¨£ºÕÒ³ö100·ÖÖ§£¬±È¶ÔÓëÐÂÖ÷¸ÉÖ®¼äµÄ²î±ð£¬²¢Ìí¼Óµ½99ÖС£ÕâÑù99¾ÍÓÐ×îеÄÈ«²¿´úÂëÁË¡£
cd 99_Branch
svn merge svn://xxx.com/repo/tags/project_New_BL
svn:/xxx.com/repo/branches/100_Branch
svn ci -m 'merge 100 branch' |
·¢²¼
¸øµ±Ç°Ö÷¸É´ò¸ö±êÇ©£¬²¢ÇÒÕâ¸ö±êÇ©²»Ôٸ͝ÁË£¬µ«ÊÇʵ¼ÊÉϱêÇ©ºÍ·ÖÖ§ÊÇÒ»¸öÒâ˼£¬Äã¿ÉÒÔÔÚ±êÇ©ÉϼÌÐø×ö¸Ä¶¯£¬µ«Õâ²»ÍÆ¼ö¡£
svn copy/cp
svn://xxx.com/repo/trunk svn://xxx.com/repo/tags/RB-1.0 |
ºÏ²¢Ö÷¸Éµ½·ÖÖ§
svn merge -r
LastRevisionMergedFromTrunkToBranch:HEAD svn:/xxx.com/repo/branches/99_Branch |
½â¾ö³åÍ»
µ±·¢Éú³åÍ»µÄʱºò£¬»áÌáʾÈçÏÂÐÅÏ¢£º
Conflict discovered
in 'index.html'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
svn detects that theres a conflict here and require
you to take some kind of action. |
Èç¹ûÄãÊäÈësÑ¡ÏÔò»áÁгöËùÓÐsvn½â¾ö³åÍ»µÄÑ¡ÏÈçÏÂËùʾ£º
(e) edit - change
merged file in an editor #Ö±½Ó½øÈë±à¼
(df) diff-full -show all changes made to merged
file #ÏÔʾ¸ü¸ÄÖÁÄ¿±êÎļþµÄËùÓб仯
(r) resolved -accept merged version of file
(dc) display-conflict -show all conflicts(ignoring
merged version) #ÏÔʾËùÓгåÍ»
(mc) mine-conflict -accept my version for all
conflicts (same) #³åÍ»ÒÔ±¾µØÎª×¼
(tc) theirs-conflict -accept their version for
all conflicts (same) #³åÍ»ÒÔ·þÎñÆ÷Ϊ׼
(mf) mine-full -accept my version of entire file
(even non-conflicts) #ÍêÈ«ÒÔ±¾µØÎª×¼
(tf) theirs-full -accept their version of entire
file (same) #ÍêÈ«ÒÔ·þÎñÆ÷Ϊ׼
(p) postpone -mark the conflict to be resolved
later #±ê¼Ç³åÍ»£¬ÉÔºó½â¾ö
(l) launch -launch external tool to resolve conflict
(s) show all -show this list |
Ò»°ãÎÒÃÇ»áÑ¡ÔñpÉÔºó½â¾ö³åÍ»£¬ÕâÑù»áÉú³ÉÈý¸öÎļþ£º.mine, .rOLDREV, .rNEWREV¡£±ÈÈ磺
index.html
index.html.mine
index.html.r1
index.html.r2 |
½â¾ö³åÍ»·½·¨´óÖÂÓÐһϼ¸ÖÖ£º
ÊÖ¹¤ÐÞ¸Äindex.htmlÎļþ£¬È»ºó½«µ±Ç°index.html×÷Ϊ×îºóÌá½»µÄ°æ±¾
svn resolve
index.html ¨C-accept working |
Ñ¡Ôñbase°æ±¾£¬¼´index.html.rOLDREV×÷Ϊ×îºóÌá½»µÄ°æ±¾
svn resolve
index.html ¨C-accept base |
ʹÓÃindex.html.rNEWREV×÷Ϊ×îºóÌá½»µÄ°æ±¾
svn resolve
index.html ¨C-accept theirs-full |
ʹÓÃindex.html.mine×÷Ϊ×îºóÌá½»µÄ°æ±¾
svn resolve
index.html ¨C-accept mine-full
// »òÕßÓÃÏÂÃæÕâÌõÃüÁîÒ²¿ÉÒÔ
// svn resolve index.html ¨C-accept theirs-conflict |
Ìá½»´úÂë
×îºó£¬Ò»ÇÐÈ·ÈÏûÎÊÌâÁË£ºcode reviewÍê±Ï£¬×Ô¼º¾õµÃ´úÂëÂúÒâÁË£»È»ºóÒ²ºÏ²¢Íê±ðÈ˵ÄÐ޸IJ¢ÇÒûÓгåÍ»ÁË¡£ÄÇô¾ÍÌá½»´úÂë°É£º
svn commit/ci
-m 'message' |
µ¼³ö´úÂë
ÄãÏë°ÑÄãµÄ´úÂëµ¼³ö£¬²»°üº¬svn°æ±¾ÐÅÏ¢£¬ÄÇôÄã¿ÉÒÔ£º
svn export svn://xxx.com/repo/branches/test
folder(±¾µØÄ¿Â¼) |
Gitƪ
°²×°Ö®ºóµÚÒ»²½
°²×° Git Ö®ºó£¬ÄãÒª×öµÄµÚÒ»¼þÊÂÇé¾ÍÊÇÈ¥ÅäÖÃÄãµÄÃû×ÖºÍÓÊÏ䣬ÒòΪÿһ´ÎÌá½»¶¼ÐèÒªÕâЩÐÅÏ¢£º
git config --global
user.name "bukas"
git config --global user.email "bukas@gmail.com" |
»ñÈ¡GitÅäÖÃÐÅÏ¢£¬Ö´ÐÐÒÔÏÂÃüÁ
´´½¨°æ±¾¿â
ʲôÊǰ汾¿âÄØ£¿°æ±¾¿âÓÖÃû²Ö¿â£¬Ó¢ÎÄÃûrepository£¬Äã¿ÉÒÔ¼òµ¥Àí½â³ÉÒ»¸öĿ¼£¬Õâ¸öĿ¼ÀïÃæµÄËùÓÐÎļþ¶¼¿ÉÒÔ±»Git¹ÜÀíÆðÀ´£¬Ã¿¸öÎļþµÄÐ޸ġ¢É¾³ý£¬Git¶¼Äܸú×Ù£¬ÒÔ±ãÈκÎʱ¿Ì¶¼¿ÉÒÔ×·×ÙÀúÊ·£¬»òÕßÔÚ½«À´Ä³¸öʱ¿Ì¿ÉÒÔ¡°»¹Ô¡±¡£
mkdir testgit
&& cd testgit
git init |
˲¼äGit¾Í°Ñ²Ö¿â½¨ºÃÁË£¬Ï¸ÐĵĶÁÕß¿ÉÒÔ·¢ÏÖµ±Ç°Ä¿Â¼Ï¶àÁËÒ»¸ö.gitµÄĿ¼£¬Ä¬ÈÏÊÇÒþ²ØµÄ£¬ÓÃls
-ahÃüÁî¾Í¿ÉÒÔ¿´¼û¡£

°ÑÎļþÌí¼Óµ½°æ±¾¿â
touch readme.md
git add readme.md |
È»ºóÓÃÃüÁîgit commit¸æËßGit°ÑÎļþÌá½»µ½²Ö¿â£º
git commit -m
"wrote a readme file" |
¼òµ¥½âÊÍÒ»ÏÂgit commitÃüÁ-mºóÃæÊäÈëµÄÊDZ¾´ÎÌá½»µÄ˵Ã÷£¬¿ÉÒÔÊäÈëÈÎÒâÄÚÈÝ£¬µ±È»×îºÃÊÇÓÐÒâÒåµÄ£¬ÕâÑùÄã¾ÍÄÜ´ÓÀúÊ·¼Ç¼Àï·½±ãµØÕÒµ½¸Ä¶¯¼Ç¼¡£
Ò»´Î¿ÉÒÔadd¶à¸ö²»Í¬µÄÎļþ£¬ÒÔ¿Õ¸ñ·Ö¸ô£º
git add a.txt
b.txt c.txt |
²Ö¿â״̬
git statusÃüÁî¿ÉÒÔÈÃÎÒÃÇʱ¿ÌÕÆÎղֿ⵱ǰµÄ״̬¡£
µ«Èç¹ûÄÜ¿´¿´¾ßÌåÐÞ¸ÄÁËʲôÄÚÈݾ͸üºÃÁË£º
°æ±¾»ØÍË
ÔÚʵ¼Ê¹¤×÷ÖУ¬ÎÒÃÇÄÔ×ÓÀïÔõô¿ÉÄܼǵÃÒ»¸ö¼¸Ç§ÐеÄÎļþÿ´Î¶¼¸ÄÁËʲôÄÚÈÝ£¬²»È»Òª°æ±¾¿ØÖÆÏµÍ³¸Éʲô¡£°æ±¾¿ØÖÆÏµÍ³¿Ï¶¨ÓÐij¸öÃüÁî¿ÉÒÔ¸æËßÎÒÃÇÀúÊ·¼Ç¼£¬ÔÚGitÖУ¬ÎÒÃÇÓÃgit
logÃüÁî²é¿´£º

git logÃüÁîÏÔʾ´Ó×î½üµ½×îÔ¶µÄÌá½»ÈÕÖ¾¡£Èç¹ûÏÓÊä³öÐÅϢ̫¶à£¬¿´µÃÑÛ»¨çÔÂҵģ¬¿ÉÒÔÊÔÊÔ¼ÓÉÏ--pretty=oneline²ÎÊý£º

ÐèÒªÓÑÇéÌáʾµÄÊÇ£¬Äã¿´µ½µÄÒ»´ó´®ÀàËÆ2e70fd...376315µÄÊÇcommit id£¨°æ±¾ºÅ£©
ÔÚ GitÖУ¬ÓÃHEAD±íʾµ±Ç°°æ±¾£¬Ò²¾ÍÊÇ×îеÄÌá½»commit id£¬ÉÏÒ»¸ö°æ±¾¾ÍÊÇHEAD^£¬ÉÏÉÏÒ»¸ö°æ±¾¾ÍÊÇHEAD^^£¬µ±È»ÍùÉÏ100¸ö°æ±¾Ð´100¸ö^±È½ÏÈÝÒ×Êý²»¹ýÀ´£¬ËùÒÔд³ÉHEAD~100¡£
ÏÖÔÚÎÒÃÇÒª°Ñµ±Ç°°æ±¾»ØÍ˵½ÉÏÒ»¸ö°æ±¾£¬¾Í¿ÉÒÔʹÓÃgit resetÃüÁ
È»ÎÒÃÇÓÃgit logÔÙ¿´¿´ÏÖÔÚ°æ±¾¿âµÄ״̬£¬×îеÄÄǸö°æ±¾ÒѾ¿´²»µ½ÁË£¡ºÃ±ÈÄã´Ó21ÊÀ¼Í×øÊ±¹â´©Ëó»úÀ´µ½ÁË19ÊÀ¼Í£¬ÏëÔÙ»ØÈ¥ÒѾ»Ø²»È¥ÁË£¬Ö×ô°ì£¿

°ì·¨Æäʵ»¹ÊÇÓеģ¬Ö»ÒªÉÏÃæµÄÃüÁîÐд°¿Ú»¹Ã»Óб»¹Øµô£¬Äã¾Í¿ÉÒÔ˳×ÅÍùÉÏÕÒ°¡ÕÒ°¡£¬¼ÙÉèÕÒµ½ÄǸöcommit
idÊÇ2e70fdf...£¬ÓÚÊǾͿÉÒÔÖ¸¶¨»Øµ½Î´À´µÄij¸ö°æ±¾£º
°æ±¾ºÅû±ØÒªÐ´È«£¬Ç°¼¸Î»¾Í¿ÉÒÔÁË£¬Git»á×Ô¶¯È¥ÕÒ¡£µ±È»Ò²²»ÄÜֻдǰһÁ½Î»£¬ÒòΪGit¿ÉÄÜ»áÕÒµ½¶à¸ö°æ±¾ºÅ£¬¾ÍÎÞ·¨È·¶¨ÊÇÄÄÒ»¸öÁË¡£
ÏÖÔÚ£¬Äã»ØÍ˵½ÁËij¸ö°æ±¾£¬¹ØµôÁ˵çÄÔ£¬µÚ¶þÌìÔçÉϾͺó»ÚÁË£¬Ïë»Ö¸´µ½Ð°汾Ôõô°ì£¿ÕÒ²»µ½Ð°汾µÄcommit
idÔõô°ì£¿
GitÌṩÁËÒ»¸öÃüÁîgit reflogÓÃÀ´¼Ç¼ÄãµÄÿһ´ÎÃüÁ

ÖÕÓÚÊæÁË¿ÚÆø£¬ÓÚÊÇÄã¿´µ½µÄcommit idÊÇ2e70fdf£¬ÏÖÔÚ£¬ÄãÓÖ¿ÉÒÔ³Ë×øÊ±¹â»ú»Øµ½Î´À´ÁË¡£
¹¤×÷ÇøºÍÔÝ´æÇø
GitºÍÆäËû°æ±¾¿ØÖÆÏµÍ³ÈçSVNµÄÒ»¸ö²»Í¬Ö®´¦¾ÍÊÇÓÐÔÝ´æÇøµÄ¸ÅÄî¡£
¹¤×÷Çø¾ÍÊÇÄãÔÚµçÄÔÀïÄÜ¿´µ½µÄĿ¼£¬±ÈÈçÎÒµÄtestgitÎļþ¼Ð¾ÍÊÇÒ»¸ö¹¤×÷Çø¡£
¹¤×÷ÇøÓÐÒ»¸öÒþ²ØÄ¿Â¼.git£¬Õâ¸ö²»Ë㹤×÷Çø£¬¶øÊÇGitµÄ°æ±¾¿â¡£
GitµÄ°æ±¾¿âÀï´æÁ˺ܶණÎ÷£¬ÆäÖÐ×îÖØÒªµÄ¾ÍÊdzÆÎªstage£¨»òÕß½Ðindex£©µÄÔÝ´æÇø£¬»¹ÓÐGitΪÎÒÃÇ×Ô¶¯´´½¨µÄµÚÒ»¸ö·ÖÖ§master£¬ÒÔ¼°Ö¸Ïò
masterµÄÒ»¸öÖ¸Õë½ÐHEAD¡£
Ç°Ãæ½²ÁËÎÒÃǰÑÎļþÍù Git °æ±¾¿âÀïÌí¼ÓµÄʱºò£¬ÊÇ·ÖÁ½²½Ö´Ðеģº
µÚÒ»²½ÊÇÓÃgit add°ÑÎļþÌí¼Ó½øÈ¥£¬Êµ¼ÊÉϾÍÊǰÑÎļþÐÞ¸ÄÌí¼Óµ½ÔÝ´æÇø£»
µÚ¶þ²½ÊÇÓÃgit commitÌá½»¸ü¸Ä£¬Êµ¼ÊÉϾÍÊǰÑÔÝ´æÇøµÄËùÓÐÄÚÈÝÌá½»µ½µ±Ç°·ÖÖ§¡£
ÒòΪÎÒÃÇ´´½¨Git°æ±¾¿âʱ£¬Git×Ô¶¯ÎªÎÒÃÇ´´½¨ÁËΨһһ¸ömaster·ÖÖ§£¬ËùÒÔÏÖÔÚgit commit¾ÍÊÇÍùmaster·ÖÖ§ÉÏÌá½»¸ü¸Ä¡£
Äã¿ÉÒÔ¼òµ¥Àí½âΪ£¬git addÃüÁîʵ¼ÊÉϾÍÊǰÑÒªÌá½»µÄËùÓÐÐ޸ķŵ½ÔÝ´æÇø£¨Stage£©£¬È»ºóÖ´ÐÐgit
commit¾Í¿ÉÒÔÒ»´ÎÐÔ°ÑÔÝ´æÇøµÄËùÓÐÐÞ¸ÄÌá½»µ½·ÖÖ§¡£
Ò»µ©Ìá½»ºó£¬Èç¹ûÄãÓÖûÓжԹ¤×÷Çø×öÈκÎÐ޸ģ¬ÄÇô¹¤×÷Çø¾ÍÊÇ¡°¸É¾»¡±µÄ¡£
ÐÞ¸ÄÓë³·Ïú
ÓÃgit diff HEAD -- readme.mdÃüÁî¿ÉÒԲ鿴¹¤×÷ÇøºÍ°æ±¾¿âÀïÃæ×îа汾µÄÇø±ð¡£
git checkout -- file¿ÉÒÔ¶ªÆú¹¤×÷ÇøµÄÐ޸ģº
git checkout
-- readme.md |
ÃüÁîgit checkout -- readme.mdÒâ˼¾ÍÊÇ£¬°Ñreadme.mdÎļþÔÚ¹¤×÷ÇøµÄÐÞ¸ÄÈ«²¿³·Ïú£¬¼´ÈÃÕâ¸öÎļþ»Øµ½×î½üÒ»´Îgit
commit»ògit addʱµÄ״̬¡£
µ±È»Ò²¿ÉÒÔÓÃgit resetÃüÁî¡£
ɾ³ýÎļþ
Ò»°ãÇé¿öÏ£¬Äãͨ³£Ö±½ÓÔÚÎļþ¹ÜÀíÆ÷ÖаÑûÓõÄÎļþɾÁË£¬»òÕßÓÃrmÃüÁîɾÁË£º
Õâ¸öʱºò£¬Git ÖªµÀÄãɾ³ýÁËÎļþ£¬Òò´Ë£¬¹¤×÷ÇøºÍ°æ±¾¿â¾Í²»Ò»ÖÂÁË£¬git statusÃüÁî»áÁ¢¿Ì¸æËßÄãÄÄЩÎļþ±»É¾³ýÁË¡£
ÏÖÔÚÄãÓÐÁ½¸öÑ¡Ôñ£¬Ò»ÊÇȷʵҪ´Ó°æ±¾¿âÖÐɾ³ý¸ÃÎļþ£¬ÄǾÍÓÃÃüÁîgit rmɾµô£¬²¢ÇÒgit commit£º
git rm readme.md
git commit -m "remove readme.md" |
ÏÖÔÚ£¬Îļþ¾Í´Ó°æ±¾¿âÖб»É¾³ýÁË¡£
ÁíÒ»ÖÖÇé¿öÊÇɾ´íÁË£¬ÒòΪ°æ±¾¿âÀﻹÓÐÄØ£¬ËùÒÔ¿ÉÒÔºÜÇáËɵذÑÎóɾµÄÎļþ»Ö¸´µ½×îа汾£º
git checkout
-- readme.md |
Éú³ÉSSH key
´´½¨ SSH Key¡£ÔÚÓû§Ö÷Ŀ¼Ï£¬¿´¿´ÓÐûÓÐ.sshĿ¼£¬Èç¹ûÓУ¬ÔÙ¿´¿´Õâ¸öĿ¼ÏÂÓÐûÓÐid_rsaºÍid_rsa.pubÕâÁ½¸öÎļþ£¬Èç¹ûÒѾÓÐÁË£¬¿ÉÖ±½ÓÌøµ½ÏÂÒ»²½¡£Èç¹ûûÓУ¬´ò¿ª
Shell£¨WindowsÏ´ò¿ªGit Bash£©£¬´´½¨SSH Key£º
ssh-keygen -t
rsa -C "youremail@example.com" |
ÄãÐèÒª°ÑÓʼþµØÖ·»»³ÉÄã×Ô¼ºµÄÓʼþµØÖ·£¬È»ºóһ·»Ø³µ£¬Ê¹ÓÃĬÈÏÖµ¼´¿É¡£
Èç¹ûÒ»ÇÐ˳ÀûµÄ»°£¬¿ÉÒÔÔÚÓû§Ö÷Ŀ¼ÀïÕÒµ½.sshĿ¼£¬ÀïÃæÓÐid_rsaºÍid_rsa.pubÁ½¸öÎļþ£¬ÕâÁ½¸ö¾ÍÊÇSSH
KeyµÄÃØÔ¿¶Ô£¬id_rsaÊÇ˽Կ£¬²»ÄÜй¶³öÈ¥£¬id_rsa.pubÊǹ«Ô¿£¬¿ÉÒÔ·ÅÐĵظæËßÈκÎÈË¡£
È»ºóµÇ¼GitHub£¨»òÕ߯äËüGit´úÂëÍÐ¹ÜÆ½Ì¨£©£¬´ò¿ªAccount settings£¬SSH
KeysÒ³Ãæ£¬µãAdd SSH Key£¬ÌîÉÏÈÎÒâTitle£¬ÔÚKeyÎı¾¿òÀïÕ³Ìùid_rsa.pubÎļþµÄÄÚÈÝ¡£
ΪʲôGitHubÐèÒªSSH KeyÄØ£¿ÒòΪGitHubÐèҪʶ±ð³öÄãÍÆË͵ÄÌύȷʵÊÇÄãÍÆË͵쬶ø²»ÊDZðÈËð³äµÄ£¬¶øGitÖ§³ÖSSHÐÒ飬ËùÒÔGitHubÖ»ÒªÖªµÀÁËÄãµÄ¹«Ô¿£¬¾Í¿ÉÒÔÈ·ÈÏÖ»ÓÐÄã×Ô¼º²ÅÄÜÍÆËÍ¡£
µ±È»£¬GitHubÔÊÐíÄãÌí¼Ó¶à¸öKey¡£¼Ù¶¨ÄãÓÐÈô¸ÉµçÄÔ£¬ÄãÒ»»á¶ùÔÚ¹«Ë¾Ìá½»£¬Ò»»á¶ùÔÚ¼ÒÀïÌá½»£¬Ö»Òª°Ñÿ̨µçÄÔµÄKey¶¼Ìí¼Óµ½GitHub£¬¾Í¿ÉÒÔÔÚÿ̨µçÄÔÉÏÍùGitHubÍÆËÍÁË¡£
Ô¶³Ì·þÎñÆ÷
Git ×îÇ¿´óµÄ¹¦ÄÜÖ®Ò»ÊÇ¿ÉÒÔÓÐÒ»¸öÒÔÉϵÄÔ¶³Ì·þÎñÆ÷£¨ÁíÒ»¸öÊÂʵ£¬Äã×ÜÊÇ¿ÉÒÔÔËÐÐÒ»¸ö±¾µØ²Ö¿â£©¡£Äã²»Ò»¶¨×ÜÊÇÐèҪд·ÃÎÊȨÏÞ£¬Äã¿ÉÒÔ´Ó¶à¸ö·þÎñÆ÷ÖжÁÈ¡£¨ÓÃÓںϲ¢£©£¬È»ºóдµ½ÁíÒ»¸ö·þÎñÆ÷ÖС£Ìí¼ÓÒ»¸öÔ¶³Ì·þÎñÆ÷ºÜ¼òµ¥£º
git remote add
origin(±ðÃû£¬¸ù¾Ý°®ºÃÃüÃû) git@github.com:bukas/bukas.git |
Èç¹ûÄãÏë²é¿´Ô¶³Ì·þÎñÆ÷µÄÏà¹ØÐÅÏ¢£¬Äã¿ÉÒÔÕâÑù×ö£º
# shows URLs
of each remote server
git remote -v
# gives more details about origin
git remote show origin(±ðÃû) |
ÏÂÒ»²½£¬¾Í¿ÉÒ԰ѱ¾µØ¿âµÄËùÓÐÄÚÈÝÍÆË͵½Ô¶³Ì¿âÉÏ£º
git push -u
origin master |
°Ñ±¾µØ¿âµÄÄÚÈÝÍÆË͵½Ô¶³Ì£¬ÓÃgit pushÃüÁʵ¼ÊÉÏÊǰѵ±Ç°·ÖÖ§masterÍÆË͵½Ô¶³Ì¡£
ÓÉÓÚÔ¶³Ì¿âÊǿյģ¬ÎÒÃǵÚÒ»´ÎÍÆËÍmaster·Ö֧ʱ£¬¼ÓÉÏÁË-u²ÎÊý£¬Git²»µ«»á°Ñ±¾µØµÄmaster·ÖÖ§ÄÚÈÝÍÆË͵ÄÔ¶³ÌеÄmaster·ÖÖ§£¬»¹»á°Ñ±¾µØµÄmaster·ÖÖ§ºÍÔ¶³ÌµÄmaster·ÖÖ§¹ØÁªÆðÀ´£¬ÔÚÒÔºóµÄÍÆËÍ»òÕßÀȡʱ¾Í¿ÉÒÔ¼ò»¯ÃüÁî¡£
´ÓÏÖÔÚÆð£¬Ö»Òª±¾µØ×÷ÁËÌá½»£¬¾Í¿ÉÒÔͨ¹ýÃüÁî°Ñ±¾µØmaster·ÖÖ§µÄ×îÐÂÐÞ¸ÄÍÆËÍÖÁGitHub£º
SSH¾¯¸æ
µ±ÄãµÚÒ»´ÎʹÓÃGitµÄclone»òÕßpushÃüÁîÁ¬½ÓGitHubʱ£¬»áµÃµ½Ò»¸ö¾¯¸æ£º
The authenticity of host 'github.com (xx.xx.xx.xx)'
can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
ÕâÊÇÒòΪGitʹÓÃSSHÁ¬½Ó£¬¶øSSHÁ¬½ÓÔÚµÚÒ»´ÎÑéÖ¤GitHub·þÎñÆ÷µÄKeyʱ£¬ÐèÒªÄãÈ·ÈÏ GitHubµÄKeyµÄÖ¸ÎÆÐÅÏ¢ÊÇ·ñÕæµÄÀ´×ÔGitHubµÄ·þÎñÆ÷£¬ÊäÈëyes»Ø³µ¼´¿É¡£
´ÓÔ¶³Ì¿â¿Ë¡
µ±ÒѾÓÐÒ»¸öÔ¶³Ì¿âµÄʱºò£¬ÎÒÃÇ¿ÉÒÔÓÃÃüÁîgit clone¿Ë¡һ¸ö±¾µØ¿â£º
git clone git@github.com:test/testgit.git |
ÄãÒ²Ðí»¹×¢Òâµ½£¬GitHub¸ø³öµÄµØÖ·²»Ö¹Ò»¸ö£¬»¹¿ÉÒÔÓÃhttps://github.com/test/testgit.gitÕâÑùµÄµØÖ·¡£Êµ¼ÊÉÏGitÖ§³Ö¶àÖÖÐÒ飬ĬÈϵÄgit://ʹÓÃssh£¬µ«Ò²¿ÉÒÔʹÓÃ
httpsµÈÆäËûÐÒ顣ʹÓÃhttps³ýÁËËÙ¶ÈÂýÒÔÍ⣬»¹Óиö×î´óµÄÂé·³ÊÇÿ´ÎÍÆËͶ¼±ØÐëÊäÈë¿ÚÁµ«ÊÇÔÚijЩֻ¿ª·Åhttp¶Ë¿ÚµÄ¹«Ë¾ÄÚ²¿¾ÍÎÞ·¨Ê¹ÓÃsshÐÒé¶øÖ»ÄÜÓÃhttps¡£
´´½¨ÓëºÏ²¢·ÖÖ§
Ê×ÏÈÎÒÃÇ´´½¨dev·ÖÖ§£¬È»ºóÇл»µ½dev·ÖÖ§£º
git checkoutÃüÁî¼ÓÉÏ-b²ÎÊý±íʾ´´½¨²¢Çл»£¬Ï൱ÓÚÒÔÏÂÁ½ÌõÃüÁ
git branch dev
git checkout dev |
È»ºóÓÃgit branchÃüÁî²é¿´µ±Ç°·ÖÖ§£º
ÎÒÃÇÔÚdev·ÖÖ§ÉϽøÐÐÌí¼ÓÐ޸IJÙ×÷£¬È»ºóÎÒÃǰÑdev·ÖÖ§µÄ¹¤×÷³É¹ûºÏ²¢µ½master·ÖÖ§ÉÏ£º
git checkout
master
git merge dev |
git mergeÃüÁîÓÃÓںϲ¢Ö¸¶¨·ÖÖ§µ½µ±Ç°·ÖÖ§¡£
×¢Òâµ½git mergeµÄÐÅÏ¢ÀïÃæ¿ÉÄÜÓÐFast-forward×ÖÑù£¬Git¸æËßÎÒÃÇ£¬Õâ´ÎºÏ²¢ÊÇ¡°¿ì½øÄ£Ê½¡±£¬Ò²¾ÍÊÇÖ±½Ó°ÑmasterÖ¸ÏòdevµÄµ±Ç°Ìá½»£¬ËùÒԺϲ¢Ëٶȷdz£¿ì¡£
µ±È»Ò²²»ÊÇÿ´ÎºÏ²¢¶¼ÄÜFast-forward¡£
ºÏ²¢Íê³Éºó£¬¾Í¿ÉÒÔ·ÅÐĵØÉ¾³ýdev·ÖÖ§ÁË£º
Èç¹ûÒª¶ªÆúÒ»¸öûÓб»ºÏ²¢¹ýµÄ·ÖÖ§£¬¿ÉÒÔͨ¹ýgit branch -D <branch>Ç¿ÐÐɾ³ý¡£
ÔÚ±¾µØ´´½¨ºÍÔ¶³Ì·ÖÖ§¶ÔÓ¦µÄ·ÖÖ§£¬Ê¹ÓÃgit checkout -b branch-name origin/branch-name£¬±¾µØºÍÔ¶³Ì·ÖÖ§µÄÃû³Æ×îºÃÒ»Ö£»
½¨Á¢±¾µØ·ÖÖ§ºÍÔ¶³Ì·ÖÖ§µÄ¹ØÁª£¬Ê¹ÓÃgit branch --set-upstream branch-name
origin/branch-name£»
´ÓÔ¶³Ìץȡ·ÖÖ§£¬Ê¹ÓÃgit pull£¬Èç¹ûÓгåÍ»£¬ÒªÏÈ´¦Àí³åÍ»¡£
½â¾ö³åÍ»
ÈËÉú²»ÈçÒâÖ®ÊÂʮ֮°Ë¾Å£¬ºÏ²¢·ÖÖ§ÍùÍùÒ²²»ÊÇÒ»·«·ç˳µÄ¡£
ÓÐʱºòÎÒÃǽøÐкϲ¢µÄʱºò£¬»áÌáʾÓгåÍ»³öÏÖCONFLICT (content)£¬±ØÐëÊÖ¶¯½â¾ö³åÍ»ºóÔÙÌá½»¡£git
statusÒ²¿ÉÒÔ¸æËßÎÒÃdzåÍ»µÄÎļþ¡£
´ò¿ª³åÍ»ÎļþÎÒÃǻῴµ½GitÓÃ<<<<<<<£¬=======£¬>>>>>>>±ê¼Ç³ö²»Í¬·ÖÖ§µÄÄÚÈÝ£¬ÎÒÃÇÐ޸ĺóÌá½»£º
git add readme.md
git commit -m "conflict fixed" |
Óôø²ÎÊýµÄgit logÒ²¿ÉÒÔ¿´µ½·ÖÖ§µÄºÏ²¢Çé¿ö£º
git log --graph
--pretty=oneline --abbrev-comm |
·ÖÖ§¹ÜÀí²ßÂÔ
ͨ³££¬ºÏ²¢·Ö֧ʱ£¬Èç¹û¿ÉÄÜ£¬Git»áÓÃFast forwardģʽ£¬µ«ÕâÖÖģʽÏ£¬É¾³ý·ÖÖ§ºó£¬»á¶ªµô·ÖÖ§ÐÅÏ¢¡£
Èç¹ûÒªÇ¿ÖÆ½ûÓÃFast forwardģʽ£¬Git¾Í»áÔÚmergeʱÉú³ÉÒ»¸öеÄcommit£¬ÕâÑù£¬´Ó·ÖÖ§ÀúÊ·ÉϾͿÉÒÔ¿´³ö·ÖÖ§ÐÅÏ¢¡£
ÏÂÃæÎÒÃÇʵսһÏÂ--no-ff·½Ê½µÄgit merge£º
Ê×ÏÈ£¬ÈÔÈ»´´½¨²¢Çл»dev·ÖÖ§£º
ÐÞ¸Äreadme.mdÎļþ£¬²¢Ìá½»Ò»¸öеÄcommit£º
git add readme.md
git commit -m "add merge" |
ÏÖÔÚ£¬ÎÒÃÇÇл»»Ømaster£º
×¼±¸ºÏ²¢dev·ÖÖ§£¬Çë×¢Òâ--no-ff²ÎÊý£¬±íʾ½ûÓÃFast forward£º
git merge --no-ff
-m "merge with no-ff" dev |
ÓÃÒ»¸ö·ÖÖ§µÄÄÚÈݸ²¸ÇÁíÒ»¸ö·ÖÖ§£º
// ºÏ²¢dev£¬³åͻʱÓÃdevµÄ´úÂëÌæ»»masterµÄ´úÂë
git merge -s recursive -X theirs dev
// ºÏ²¢dev£¬³åͻʱÓÃmasterµÄ´úÂëÌæ»»devµÄ´úÂë
git merge -s recursive -X ours dev |
Bug·ÖÖ§
Èí¼þ¿ª·¢ÖУ¬bug¾ÍÏñ¼Ò³£±ã·¹Ò»Ñù¡£ÓÐÁËbug¾ÍÐèÒªÐÞ¸´£¬ÔÚGitÖУ¬ÓÉÓÚ·ÖÖ§ÊÇÈç´ËµÄÇ¿´ó£¬ËùÒÔ£¬Ã¿¸öbug¶¼¿ÉÒÔͨ¹ýÒ»¸öеÄÁÙʱ·ÖÖ§À´ÐÞ¸´£¬ÐÞ¸´ºó£¬ºÏ²¢·ÖÖ§£¬È»ºó½«ÁÙʱ·Ö֧ɾ³ý¡£
µ±Äã½Óµ½Ò»¸öÐÞ¸´Ò»¸ö´úºÅ101µÄbugµÄÈÎÎñʱ£¬ºÜ×ÔÈ»µØ£¬ÄãÏë´´½¨Ò»¸ö·ÖÖ§issue-101À´ÐÞ¸´Ëü£¬µ«ÊÇ£¬µÈµÈ£¬µ±Ç°ÕýÔÚdevÉϽøÐеŤ×÷»¹Ã»ÓÐÌá½»¡£
²¢²»ÊÇÄã²»ÏëÌá½»£¬¶øÊǹ¤×÷Ö»½øÐе½Ò»°ë£¬»¹Ã»·¨Ìá½»£¬Ô¤¼ÆÍê³É»¹Ðè1Ììʱ¼ä¡£µ«ÊÇ£¬±ØÐëÔÚÁ½¸öСʱÄÚÐÞ¸´¸Ãbug£¬Ôõô°ì£¿
ÐҺã¬Git»¹ÌṩÁËÒ»¸östash¹¦ÄÜ£¬¿ÉÒ԰ѵ±Ç°¹¤×÷ÏÖ³¡¡°´¢²Ø¡±ÆðÀ´£¬µÈÒÔºó»Ö¸´ÏÖ³¡ºó¼ÌÐø¹¤×÷£º
ÏÖÔÚ£¬ÓÃgit status²é¿´¹¤×÷Çø£¬¾ÍÊǸɾ»µÄ£¨³ý·ÇÓÐûÓб» Git ¹ÜÀíµÄÎļþ£©£¬Òò´Ë¿ÉÒÔ·ÅÐĵش´½¨·ÖÖ§À´ÐÞ¸´bug¡£
Ê×ÏÈÈ·¶¨ÒªÔÚÄĸö·ÖÖ§ÉÏÐÞ¸´bug£¬¼Ù¶¨ÐèÒªÔÚmaster·ÖÖ§ÉÏÐÞ¸´£¬¾Í´Ómaster´´½¨ÁÙʱ·ÖÖ§£º
git checkout
master
git checkout -b issue-101 |
ÏÖÔÚÐÞ¸´bug£¬È»ºóÌá½»£º
git add readme.md
git commit -m "fix bug 101" |
ÐÞ¸´Íê³Éºó£¬Çл»µ½master·ÖÖ§£¬²¢Íê³ÉºÏ²¢£¬×îºóɾ³ýissue-101·ÖÖ§£º
git checkout
master
git merge --no-ff -m "merged bug fix 101"
issue-101 |
Ì«°ôÁË£¬Ô¼Æ»®Á½¸öСʱµÄbugÐÞ¸´Ö»»¨ÁË5·ÖÖÓ£¡ÏÖÔÚ£¬ÊÇʱºò½Óׯص½dev·ÖÖ§¸É»îÁË£¡
git checkout
dev
git status |
¹¤×÷ÇøÊǸɾ»µÄ£¬¸Õ²ÅµÄ¹¤×÷ÏÖ³¡´æµ½ÄÄÈ¥ÁË£¿ÓÃgit stash listÃüÁî¿´¿´£º
¹¤×÷ÏÖ³¡»¹ÔÚ£¬Git°ÑstashÄÚÈÝ´æÔÚij¸öµØ·½ÁË£¬µ«ÊÇÐèÒª»Ö¸´Ò»Ï£¬ÓÐÁ½¸ö°ì·¨£º
Ò»ÊÇÓÃgit stash apply»Ö¸´£¬µ«Êǻָ´ºó£¬stashÄÚÈݲ¢²»É¾³ý£¬ÄãÐèÒªÓÃgit stash
dropÀ´É¾³ý£»
ÁíÒ»ÖÖ·½Ê½ÊÇÓÃgit stash pop£¬»Ö¸´µÄͬʱ°ÑstashÄÚÈÝҲɾÁË£º
ÔÙÓÃgit stash list²é¿´£¬¾Í¿´²»µ½ÈκÎstashÄÚÈÝÁË¡£
Äã¿ÉÒÔ¶à´Îstash£¬»Ö¸´µÄʱºò£¬ÏÈÓÃgit stash list²é¿´£¬È»ºó»Ö¸´Ö¸¶¨µÄstash£¬ÓÃÃüÁî
git stash apply
stash@{0} |
±êÇ©¹ÜÀí
·¢²¼Ò»¸ö°æ±¾Ê±£¬ÎÒÃÇͨ³£ÏÈÔÚ°æ±¾¿âÖдòÒ»¸ö±êÇ©£¬ÕâÑù£¬¾ÍΨһȷ¶¨ÁË´ò±êǩʱ¿ÌµÄ°æ±¾¡£½«À´ÎÞÂÛʲôʱºò£¬È¡Ä³¸ö±êÇ©µÄ°æ±¾£¬¾ÍÊǰÑÄǸö´ò±êÇ©µÄʱ¿ÌµÄÀúÊ·°æ±¾È¡³öÀ´¡£ËùÒÔ£¬±êǩҲÊǰ汾¿âµÄÒ»¸ö¿ìÕÕ¡£
ÃüÁîgit tag <tagname>ÓÃÓÚн¨Ò»¸ö±êÇ©£¬Ä¬ÈÏΪHEAD£¬Ò²¿ÉÒÔÖ¸¶¨Ò»¸öcommit
id¡£
git tag -a <tagname> -m "blablabla..."¿ÉÒÔÖ¸¶¨±êÇ©ÐÅÏ¢¡£
»¹¿ÉÒÔͨ¹ý-sÓÃ˽ԿǩÃûÒ»¸ö±êÇ©£º
git tag -s v0.5
-m "signed version 0.2 released" fec145a |
git tag¿ÉÒԲ鿴ËùÓбêÇ©¡£
ÓÃÃüÁîgit show <tagname>¿ÉÒԲ鿴ij¸ö±êÇ©µÄÏêϸÐÅÏ¢¡£
Èç¹û±êÇ©´ò´íÁË£¬Ò²¿ÉÒÔɾ³ý£º
ÒòΪ´´½¨µÄ±êÇ©¶¼Ö»´æ´¢ÔÚ±¾µØ£¬²»»á×Ô¶¯ÍÆË͵½Ô¶³Ì¡£ËùÒÔ£¬´ò´íµÄ±êÇ©¿ÉÒÔÔÚ±¾µØ°²È«É¾³ý¡£
Èç¹ûÒªÍÆËÍij¸ö±êÇ©µ½Ô¶³Ì£¬Ê¹ÓÃÃüÁîgit push origin <tagname>£º
»òÕߣ¬Ò»´ÎÐÔÍÆËÍÈ«²¿ÉÐÎ´ÍÆË͵½Ô¶³ÌµÄ±¾µØ±êÇ©£º
Èç¹û±êÇ©ÒÑ¾ÍÆË͵½Ô¶³Ì£¬ÒªÉ¾³ýÔ¶³Ì±êÇ©¾ÍÂé·³Ò»µã£¬ÏÈ´Ó±¾µØÉ¾³ý£º
È»ºó£¬´ÓÔ¶³Ìɾ³ý¡£É¾³ýÃüÁîÒ²ÊÇpush£¬µ«ÊǸñʽÈçÏ£º
git push origin
:refs/tags/v0.9 |
ºöÂÔÌØÊâÎļþ
ÔÚ°²×°GitÒ»½ÚÖУ¬ÎÒÃÇÒѾÅäÖÃÁËuser.name ºÍuser.email£¬Êµ¼ÊÉÏ£¬Git»¹Óкܶà¿ÉÅäÖÃÏî¡£
±ÈÈ磬ÈÃGitÏÔʾÑÕÉ«£¬»áÈÃÃüÁîÊä³ö¿´ÆðÀ´¸üÐÑÄ¿£º
git config --global
color.ui true |
ÓÐЩʱºò£¬Äã±ØÐë°ÑijЩÎļþ·Åµ½Git¹¤×÷Ŀ¼ÖУ¬µ«ÓÖ²»ÄÜÌá½»ËüÃÇ£¬±ÈÈç±£´æÁËÊý¾Ý¿âÃÜÂëµÄÅäÖÃÎļþÀ²£¬µÈµÈ£¬Ã¿´Îgit
status¶¼»áÏÔʾUntracked files...£¬ÓÐÇ¿ÆÈÖ¢µÄͯЬÐÄÀï¿Ï¶¨²»Ë¬¡£
ºÃÔÚGit¿¼Âǵ½ÁË´ó¼ÒµÄ¸ÐÊÜ£¬Õâ¸öÎÊÌâ½â¾öÆðÀ´Ò²ºÜ¼òµ¥£¬ÔÚ Git¹¤×÷ÇøµÄ¸ùĿ¼Ï´´½¨Ò»¸öÌØÊâµÄ.gitignoreÎļþ£¬È»ºó°ÑÒªºöÂÔµÄÎļþÃûÌî½øÈ¥£¬Git¾Í»á×Ô¶¯ºöÂÔÕâЩÎļþ¡£
²»ÐèÒª´Óͷд.gitignoreÎļþ£¬GitHubÒѾΪÎÒÃÇ×¼±¸Á˸÷ÖÖÅäÖÃÎļþ£¬Ö»ÐèÒª×éºÏһϾͿÉÒÔʹÓÃÁË¡£ËùÓÐÅäÖÃÎļþ¿ÉÒÔÖ±½ÓÔÚÏßä¯ÀÀ£ºhttps://github.com/github/gitignore
µ±È»Ò²¿ÉÒÔÅäÖÃÈ«¾ÖºöÂÔµÄÎļþ£¬ÕâÑù¾Í²»ÓÃÿ¸öÏîÄ¿¶¼¼ÓgitignoreÁË£º
git config --global
core.excludesfile '~/.gitignore' |
ÅäÖñðÃû
ÓÐûÓо³£ÇôíÃüÁ±ÈÈçgit status£¿statusÕâ¸öµ¥´ÊÕæÐIJ»ºÃ¼Ç¡£
Èç¹ûÇÃgit st¾Í±íʾgit statusÄǾͼòµ¥¶àÁË£¬µ±È»ÕâÖÖ͵ÀÁµÄ°ì·¨ÎÒÃÇÊǼ«Á¦Ô޳ɵġ£
ÎÒÃÇÖ»ÐèÒªÇÃÒ»ÐÐÃüÁ¸æËßGit£¬ÒÔºóst¾Í±íʾstatus£º
git config --global
alias.st status |
µ±È»»¹ÓбðµÄÃüÁî¿ÉÒÔ¼òд£º
git config --global
alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch |
--global²ÎÊýÊÇÈ«¾Ö²ÎÊý£¬Ò²¾ÍÊÇÕâЩÃüÁîÔÚÕą̂µçÄÔµÄËùÓÐGit²Ö¿â϶¼ÓÐÓá£
ÔÚ³·ÏúÐÞ¸ÄÒ»½ÚÖУ¬ÎÒÃÇÖªµÀ£¬ÃüÁîgit reset HEAD file¿ÉÒÔ°ÑÔÝ´æÇøµÄÐ޸ij·Ïúµô£¨unstage£©£¬ÖØÐ·Żع¤×÷Çø¡£¼ÈÈ»ÊÇÒ»¸öunstage²Ù×÷£¬¾Í¿ÉÒÔÅäÖÃÒ»¸öunstage±ðÃû£º
git config --global
alias.unstage 'reset HEAD' |
ÅäÖÃÒ»¸ögit last£¬ÈÃÆäÏÔʾ×îºóÒ»´ÎÌá½»ÐÅÏ¢£º
git config --global
alias.last 'log -1' |
ÉõÖÁ»¹ÓÐÈ˰ÑlgÅäÖóÉÁË£º
git config --global
alias.lg "log --color --graph --pretty =format:'%Cred%h%Creset
-%C (yellow)%d%Creset %s %Cgreen (%cr) %C(bold blue)< %an>%Creset'
--abbrev -commit"
|
ÅäÖÃÎļþ
ÅäÖÃGitµÄʱºò£¬¼ÓÉÏ--globalÊÇÕë¶Ôµ±Ç°Óû§Æð×÷Óõģ¬Èç¹û²»¼Ó£¬ÄÇÖ»Õë¶Ôµ±Ç°µÄ²Ö¿âÆð×÷Óá£
ÅäÖÃÎļþ·ÅÄÄÁË£¿Ã¿¸ö²Ö¿âµÄGitÅäÖÃÎļþ¶¼·ÅÔÚ.git/configÎļþÖС£
¶øµ±Ç°Óû§µÄGitÅäÖÃÎļþ·ÅÔÚÓû§Ö÷Ŀ¼ÏµÄÒ»¸öÒþ²ØÎļþ.gitconfigÖС£
|