Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÄÇЩ³£ÓõÄsvnºÍgitÃüÁî
 
×÷Õߣºbukas À´Ô´£ºw3cboy.com ·¢²¼ÓÚ£º 2017-9-14
  2994  次浏览      27
 

°æ±¾¹ÜÀí»ù±¾ÉÏÊǶàÈËЭ×÷¿ª·¢Öбز»¿ÉÉٵŤ¾ß£¬³£Óõİ汾¹ÜÀí¹¤¾ßÓУº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 mkdir list

¿ÉÄÜÄã·¢ÏÖҪдµÄÄ£¿é´úÂëËÆÓھɵÄÄ£¿é£¬Ö±½Ó¸´ÖÆÕû¸ö´úÂ룺

svn copy/cp users/list.js list/list.js

¼ì²é

æµµÄÒ»Ìì¹ýÈ¥ÁË£¬»òÕßÒ»¸öÈÎÎñÍê³ÉÁË£¬Õâ¸öʱºòÒ»°ã»á½«ÄãµÄ¹¤×÷³É¹û£¬Ò²¾ÍÊÇ´úÂë¸üе½°æ±¾²Ö¿â¡£

ϰ¹ßÉÏ»áÏȼì²éÏÂÐÞ¸Ä״̬£º

svn status/stat/st

¿´µ½Ò»Ð©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ÅäÖÃÐÅÏ¢£¬Ö´ÐÐÒÔÏÂÃüÁ

git config --list

´´½¨°æ±¾¿â

ʲôÊǰ汾¿âÄØ£¿°æ±¾¿âÓÖÃû²Ö¿â£¬Ó¢ÎÄÃû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

git statusÃüÁî¿ÉÒÔÈÃÎÒÃÇʱ¿ÌÕÆÎղֿ⵱ǰµÄ״̬¡£

µ«Èç¹ûÄÜ¿´¿´¾ßÌåÐÞ¸ÄÁËʲôÄÚÈݾ͸üºÃÁË£º

git diff readme.md

°æ±¾»ØÍË

ÔÚʵ¼Ê¹¤×÷ÖУ¬ÎÒÃÇÄÔ×ÓÀïÔõô¿ÉÄܼǵÃÒ»¸ö¼¸Ç§ÐеÄÎļþÿ´Î¶¼¸ÄÁËʲôÄÚÈÝ£¬²»È»Òª°æ±¾¿ØÖÆÏµÍ³¸Éʲô¡£°æ±¾¿ØÖÆÏµÍ³¿Ï¶¨ÓÐij¸öÃüÁî¿ÉÒÔ¸æËßÎÒÃÇÀúÊ·¼Ç¼£¬ÔÚGitÖУ¬ÎÒÃÇÓÃgit logÃüÁî²é¿´£º

git log

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

git log --pretty=oneline

ÐèÒªÓÑÇéÌáʾµÄÊÇ£¬Äã¿´µ½µÄÒ»´ó´®ÀàËÆ2e70fd...376315µÄÊÇcommit id£¨°æ±¾ºÅ£©

ÔÚ GitÖУ¬ÓÃHEAD±íʾµ±Ç°°æ±¾£¬Ò²¾ÍÊÇ×îеÄÌá½»commit id£¬ÉÏÒ»¸ö°æ±¾¾ÍÊÇHEAD^£¬ÉÏÉÏÒ»¸ö°æ±¾¾ÍÊÇHEAD^^£¬µ±È»ÍùÉÏ100¸ö°æ±¾Ð´100¸ö^±È½ÏÈÝÒ×Êý²»¹ýÀ´£¬ËùÒÔд³ÉHEAD~100¡£

ÏÖÔÚÎÒÃÇÒª°Ñµ±Ç°°æ±¾»ØÍ˵½ÉÏÒ»¸ö°æ±¾£¬¾Í¿ÉÒÔʹÓÃgit resetÃüÁ

git reset --hard HEAD^

È»ÎÒÃÇÓÃgit logÔÙ¿´¿´ÏÖÔÚ°æ±¾¿âµÄ״̬£¬×îеÄÄǸö°æ±¾ÒѾ­¿´²»µ½ÁË£¡ºÃ±ÈÄã´Ó21ÊÀ¼Í×øÊ±¹â´©Ëó»úÀ´µ½ÁË19ÊÀ¼Í£¬ÏëÔÙ»ØÈ¥ÒѾ­»Ø²»È¥ÁË£¬Ö×ô°ì£¿

°ì·¨Æäʵ»¹ÊÇÓеģ¬Ö»ÒªÉÏÃæµÄÃüÁîÐд°¿Ú»¹Ã»Óб»¹Øµô£¬Äã¾Í¿ÉÒÔ˳×ÅÍùÉÏÕÒ°¡ÕÒ°¡£¬¼ÙÉèÕÒµ½ÄǸöcommit idÊÇ2e70fdf...£¬ÓÚÊǾͿÉÒÔÖ¸¶¨»Øµ½Î´À´µÄij¸ö°æ±¾£º

git reset --hard 2e70fdf

°æ±¾ºÅû±ØÒªÐ´È«£¬Ç°¼¸Î»¾Í¿ÉÒÔÁË£¬Git»á×Ô¶¯È¥ÕÒ¡£µ±È»Ò²²»ÄÜֻдǰһÁ½Î»£¬ÒòΪGit¿ÉÄÜ»áÕÒµ½¶à¸ö°æ±¾ºÅ£¬¾ÍÎÞ·¨È·¶¨ÊÇÄÄÒ»¸öÁË¡£

ÏÖÔÚ£¬Äã»ØÍ˵½ÁËij¸ö°æ±¾£¬¹ØµôÁ˵çÄÔ£¬µÚ¶þÌìÔçÉϾͺó»ÚÁË£¬Ïë»Ö¸´µ½Ð°汾Ôõô°ì£¿ÕÒ²»µ½Ð°汾µÄcommit idÔõô°ì£¿

GitÌṩÁËÒ»¸öÃüÁîgit reflogÓÃÀ´¼Ç¼ÄãµÄÿһ´ÎÃüÁ

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ÃüÁîɾÁË£º

rm readme.md

Õâ¸öʱºò£¬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£º

git push origin master

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 dev

git checkoutÃüÁî¼ÓÉÏ-b²ÎÊý±íʾ´´½¨²¢Çл»£¬Ï൱ÓÚÒÔÏÂÁ½ÌõÃüÁ

git branch dev
git checkout dev

È»ºóÓÃgit branchÃüÁî²é¿´µ±Ç°·ÖÖ§£º

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 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·ÖÖ§£º

git checkout -b dev

ÐÞ¸Äreadme.mdÎļþ£¬²¢Ìá½»Ò»¸öеÄcommit£º

git add readme.md
git commit -m "add merge"

ÏÖÔÚ£¬ÎÒÃÇÇл»»Ømaster£º

git checkout 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 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 list

¹¤×÷ÏÖ³¡»¹ÔÚ£¬Git°ÑstashÄÚÈÝ´æÔÚij¸öµØ·½ÁË£¬µ«ÊÇÐèÒª»Ö¸´Ò»Ï£¬ÓÐÁ½¸ö°ì·¨£º

Ò»ÊÇÓÃgit stash apply»Ö¸´£¬µ«Êǻָ´ºó£¬stashÄÚÈݲ¢²»É¾³ý£¬ÄãÐèÒªÓÃgit stash dropÀ´É¾³ý£»

ÁíÒ»ÖÖ·½Ê½ÊÇÓÃgit stash pop£¬»Ö¸´µÄͬʱ°ÑstashÄÚÈÝҲɾÁË£º

git stash pop

ÔÙÓÃ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¸ö±êÇ©µÄÏêϸÐÅÏ¢¡£

Èç¹û±êÇ©´ò´íÁË£¬Ò²¿ÉÒÔɾ³ý£º

git tag -d v0.1

ÒòΪ´´½¨µÄ±êÇ©¶¼Ö»´æ´¢ÔÚ±¾µØ£¬²»»á×Ô¶¯ÍÆË͵½Ô¶³Ì¡£ËùÒÔ£¬´ò´íµÄ±êÇ©¿ÉÒÔÔÚ±¾µØ°²È«É¾³ý¡£

Èç¹ûÒªÍÆËÍij¸ö±êÇ©µ½Ô¶³Ì£¬Ê¹ÓÃÃüÁîgit push origin <tagname>£º

git push origin v1.0

»òÕߣ¬Ò»´ÎÐÔÍÆËÍÈ«²¿ÉÐÎ´ÍÆË͵½Ô¶³ÌµÄ±¾µØ±êÇ©£º

git push origin --tags

Èç¹û±êÇ©ÒѾ­ÍÆË͵½Ô¶³Ì£¬ÒªÉ¾³ýÔ¶³Ì±êÇ©¾ÍÂé·³Ò»µã£¬ÏÈ´Ó±¾µØÉ¾³ý£º

git tag -d v0.9

È»ºó£¬´ÓÔ¶³Ìɾ³ý¡£É¾³ýÃüÁîÒ²ÊÇ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ÖС£

   
2994 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÿÈÕ¹¹½¨½â¾ö·½°¸
ÈçºÎÖÆ¶¨ÓÐЧµÄÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀíÖ÷Òª»î¶¯¼°ÊµÏÖ·½·¨
¹¹½¨¹ÜÀíÈëÃÅ
Ïà¹ØÎĵµ

ÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀí°×ƤÊé
CM09_CÅäÖùÜÀí±ê×¼
ʹÓÃSVN½øÐа汾¿ØÖÆ
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí