¸üÐÂʱ¼ä:2022Äê09ÔÂ08ÈÕ13ʱ41·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
½«ÉÐδ½øÐа汾¿ØÖƵı¾µØÄ¿Â¼×ª»»ÎªGit²Ö¿â£¬´ÓÆäËü·þÎñÆ÷¿Ë¡һ¸öÒÑ´æÔÚµÄGit²Ö¿â£¬ÕâÁ½ÖÖ·½Ê½¶¼Äܹ»ÔÚ×Ô¼ºµÄµçÄÔÉϵõ½Ò»¸ö¿ÉÓõÄGit²Ö¿â¡£
Èç¹û×Ô¼ºÓÐÒ»¸öÉÐδ½øÐа汾¿ØÖƵÄÏîĿĿ¼£¬ÏëÒªÓà Git À´¿ØÖÆËü£¬ÐèÒªÖ´ÐÐÈçÏÂÁ½¸ö²½Ö裺
¢Ù ÔÚÏîĿĿ¼ÖУ¬Í¨¹ýÊó±êÓÒ¼ü´ò¿ª“Git Bash”
¢Ú Ö´ÐÐ git init ÃüÁµ±Ç°µÄĿ¼ת»¯Îª Git ²Ö¿â
git init ÃüÁî»á´´½¨Ò»¸öÃûΪ .git µÄÒþ²ØÄ¿Â¼£¬Õâ¸ö .git Ŀ¼¾ÍÊǵ±Ç°ÏîÄ¿µÄ Git ²Ö¿â£¬ÀïÃæ°üº¬Á˳õʼµÄ±ØÒªÎļþ£¬ÕâЩÎļþÊÇ Git ²Ö¿âµÄ±ØÒª×é³É²¿·Ö¡£
¹¤×÷ÇøÖеÄÿһ¸öÎļþ¿ÉÄÜÓÐ 4 ÖÖ״̬£¬ÕâËÄÖÖ״̬¹²·ÖΪÁ½´óÀ࣬ÈçͼËùʾ£º

Git ²Ù×÷µÄÖÕ¼«½á¹û£ºÈù¤×÷ÇøÖеÄÎļþ¶¼´¦ÓړδÐ޸ĔµÄ״̬¡£
¿ÉÒÔʹÓà git status ÃüÁî²é¿´Îļþ´¦ÓÚʲô״̬£¬ÀýÈ磺

ÔÚ״̬±¨¸æÖпÉÒÔ¿´µ½Ð½¨µÄ index.html Îļþ³öÏÖÔÚ Untracked files(δ¸ú×ÙµÄÎļþ) ÏÂÃæ¡£Î´¸ú×ÙµÄÎļþÒâζ×Å Git ÔÚ֮ǰµÄ¿ìÕÕ(Ìá½»)ÖÐûÓÐÕâЩÎļþ;Git ²»»á×Ô¶¯½«Ö®ÄÉÈë¸ú×Ù·¶Î§£¬³ý·ÇÃ÷È·µØ¸æËßËü“ÎÒÐèҪʹÓà Git ¸ú×Ù¹ÜÀí¸ÃÎļþ”¡£
ʹÓà git status Êä³öµÄ״̬±¨¸æºÜÏêϸ£¬µ«ÓÐЩ·±Ëö¡£Èç¹ûÏ£ÍûÒÔ¾«¼òµÄ·½Ê½ÏÔʾÎļþµÄ״̬£¬¿ÉÒÔʹÓÃÈçÏÂÁ½ÌõÍêÈ«µÈ¼ÛµÄÃüÁÆäÖÐ -s ÊÇ --short µÄ¼òдÐÎʽ£º
#ÒÔ¾«¼òµÄ·½Ê½ÏÔʾÎļþ״̬ git status -s git status --short
δ¸ú×ÙÎļþÇ°ÃæÓкìÉ«µÄ ?? ±ê¼Ç£¬ÀýÈç

ʹÓÃÃüÁî git add ¿ªÊ¼¸ú×ÙÒ»¸öÎļþ¡£ ËùÒÔ£¬Òª¸ú×Ù index.html Îļþ£¬ÔËÐÐÈçϵÄÃüÁî¼´¿É£º
git add index.html
´ËʱÔÙÔËÐÐ git status ÃüÁ»á¿´µ½ index.html ÎļþÔÚ Changes to be committed ÕâÐеÄÏÂÃæ£¬ËµÃ÷Òѱ»¸ú×Ù£¬²¢´¦ÓÚÔÝ´æ×´Ì¬£º

Ò²¿ÉÒÔÒÔ¾«¼òµÄ·½Ê½ÏÔʾÎļþµÄ״̬ÐÂÌí¼Óµ½ÔÝ´æÇøÖеÄÎļþÇ°ÃæÓÐÂÌÉ«µÄ A ±ê¼Ç

ÏÖÔÚÔÝ´æÇøÖÐÓÐÒ»¸ö index.html ÎļþµÈ´ý±»Ìá½»µ½ Git ²Ö¿âÖнøÐб£´æ¡£¿ÉÒÔÖ´ÐÐ git commit ÃüÁî½øÐÐÌá½»,ÆäÖÐ -m Ñ¡ÏîºóÃæÊDZ¾´ÎµÄÌá½»ÏûÏ¢£¬ÓÃÀ´¶ÔÌá½»µÄÄÚÈÝ×ö½øÒ»²½µÄÃèÊö£º
git commit-m"н¨ÁËindex.htmlÎļþ"
Ìá½»³É¹¦Ö®ºó£¬»áÏÔʾÈçϵÄÐÅÏ¢£º

Ìá½»³É¹¦Ö®ºó£¬Ôٴμì²éÎļþµÄ״̬£¬µÃµ½ÌáʾÈçÏ£º

Ö¤Ã÷¹¤×÷ÇøÖÐËùÓеÄÎļþ¶¼´¦ÓړδÐ޸ĔµÄ״̬£¬Ã»ÓÐÈκÎÎļþÐèÒª±»Ìá½»¡£

8. ¶ÔÒÑÌá½»µÄÎļþ½øÐÐÐÞ¸Ä
Ŀǰ£¬index.html ÎļþÒѾ±» Git ¸ú×Ù£¬²¢ÇÒ¹¤×÷ÇøºÍ Git ²Ö¿âÖÐµÄ index.html ÎļþÄÚÈݱ£³ÖÒ»Ö¡£µ±ÎÒÃÇ ÐÞ¸ÄÁ˹¤×÷ÇøÖÐ index.html µÄÄÚÈÝÖ®ºó£¬ÔÙ´ÎÔËÐÐ git status ºÍ git status -s ÃüÁ»á¿´µ½ÈçϵÄÄÚÈÝ£º

Îļþ index.html ³öÏÖÔÚ Changes not staged for commit ÕâÐÐÏÂÃæ£¬ËµÃ÷ÒѸú×ÙÎļþµÄÄÚÈÝ·¢ÉúÁ˱仯£¬µ«»¹Ã»Óзŵ½ÔÝ´æÇø¡£
×¢Ò⣺Ð޸ĹýµÄ¡¢Ã»ÓзÅÈëÔÝ´æÇøµÄÎļþÇ°ÃæÓкìÉ«µÄ M ±ê¼Ç¡£
Ŀǰ£¬¹¤×÷ÇøÖÐµÄ index.html ÎļþÒѱ»Ð޸ģ¬Èç¹ûÒªÔÝ´æÕâ´ÎÐ޸ģ¬ÐèÒªÔÙ´ÎÔËÐÐ git add ÃüÁÕâ¸öÃüÁî ÊǸö¶à¹¦ÄܵÄÃüÁÖ÷ÒªÓÐÈçÏ 3 ¸ö¹¦Ð§£º
¢Ù ¿ÉÒÔÓÃËü¿ªÊ¼¸ú×ÙÐÂÎļþ
¢Ú °ÑÒѸú×ٵġ¢ÇÒÒÑÐ޸ĵÄÎļþ·Åµ½ÔÝ´æÇø
¢Û °ÑÓгåÍ»µÄÎļþ±ê¼ÇΪÒѽâ¾ö״̬

ÔÙ´ÎÔËÐÐ git commit -m "Ìá½»ÏûÏ¢" ÃüÁ¼´¿É½«ÔÝ´æÇøÖмǼµÄ index.html µÄ¿ìÕÕ£¬Ìá½»µ½ Git ²Ö¿âÖнøÐб£´æ£º


³·Ïú¶ÔÎļþµÄÐÞ¸ÄÖ¸µÄÊÇ£º°Ñ¶Ô¹¤×÷ÇøÖжÔÓ¦ÎļþµÄÐ޸쬻¹Ô³É Git ²Ö¿âÖÐËù±£´æµÄ°æ±¾¡£²Ù×÷µÄ½á¹û£ºËùÓеÄÐ޸Ļᶪʧ£¬ÇÒÎÞ·¨»Ö¸´!ΣÏÕÐԱȽϸߣ¬ÇëÉ÷ÖØ²Ù×÷!

³·Ïú²Ù×÷µÄ±¾ÖÊ£ºÓà Git ²Ö¿âÖб£´æµÄÎļþ£¬¸²¸Ç¹¤×÷ÇøÖÐÖ¸¶¨µÄÎļþ¡£
Èç¹ûÐèÒª±»ÔÝ´æµÄÎļþ¸öÊý±È½Ï¶à£¬¿ÉÒÔʹÓÃÈçϵÄÃüÁһ´ÎÐÔ½«ËùÓеÄÐÂÔöºÍÐ޸ĹýµÄÎļþ¼ÓÈëÔÝ´æÇø£º
git add
½ñºóÔÚÏîÄ¿¿ª·¢ÖУ¬»á¾³£Ê¹ÓÃÕâ¸öÃüÁ½«ÐÂÔöºÍÐ޸ĹýºóµÄÎļþ¼ÓÈëÔÝ´æÇø¡£
Èç¹ûÐèÒª´ÓÔÝ´æÇøÖÐÒÆ³ý¶ÔÓ¦µÄÎļþ£¬¿ÉÒÔʹÓÃÈçϵÄÃüÁ
git reset HEAD ÒªÒÆ³ýµÄÎļþÃû³Æ
Git ±ê×¼µÄ¹¤×÷Á÷³ÌÊǹ¤×÷Çø → ÔÝ´æÇø → Git ²Ö¿â£¬µ«ÓÐʱºòÕâô×öÂÔÏÔ·±Ëö£¬´Ëʱ¿ÉÒÔÌø¹ýÔÝ´æÇø£¬Ö±½Ó½«¹¤×÷ÇøÖеÄÐÞ¸ÄÌá½»µ½ Git ²Ö¿â£¬Õâʱºò Git ¹¤×÷µÄÁ÷³Ì¼ò»¯ÎªÁ˹¤×÷Çø → Git ²Ö¿â¡£
Git ÌṩÁËÒ»¸öÌø¹ýʹÓÃÔÝ´æÇøÓòµÄ·½Ê½£¬ Ö»ÒªÔÚÌá½»µÄʱºò£¬¸ø git commit ¼ÓÉÏ -a Ñ¡ÏGit ¾Í»á×Ô¶¯°ÑËùÓÐÒѾ¸ú×Ù¹ýµÄÎļþÔÝ´æÆðÀ´Ò»²¢Ìá½»£¬´Ó¶øÌø¹ý git add ²½Ö裺
git commit -a -m“ÃèÊöÏûÏ¢"
´ÓGit ²Ö¿âÖÐÒÆ³ýÎļþµÄ·½Ê½ÓÐÁ½ÖÖ£¬´Ó Git ²Ö¿âºÍ¹¤×÷ÇøÖÐÍ¬Ê±ÒÆ³ý¶ÔÓ¦µÄÎļþºÍÖ»´ÓGit²Ö¿âÖÐÒÆ³ýÖ¸¶¨µÄÎļþ£¬µ«±£Áô¹¤×÷ÇøÖжÔÓ¦µÄÎļþ¡£
#´Ó Git²Ö¿âºÍ¹¤×÷ÇøÖÐÍ¬Ê±ÒÆ³ýindex.js Îļþ git rm -f index.js #A´ÓGit²Ö¿âÖÐÒÆ³ý index.css,µ«±£Áô¹¤×÷ÇøÖеÄindex.cssÎļþ git rm --cached index.css
Ò»°ãÎÒÃÇ×Ü»áÓÐЩÎļþÎÞÐèÄÉÈë Git µÄ¹ÜÀí£¬Ò²²»Ï£ÍûËüÃÇ×ܳöÏÖÔÚδ¸ú×ÙÎļþÁÐ±í¡£ ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃÇ¿É
ÒÔ´´½¨Ò»¸öÃûΪ .gitignore µÄÅäÖÃÎļþ£¬ÁгöÒªºöÂÔµÄÎļþµÄÆ¥Åäģʽ¡£Îļþ .gitignore µÄ¸ñʽ¹æ·¶ÈçÏ£º
¢Ù ÒÔ # ¿ªÍ·µÄÊÇ×¢ÊÍ
¢Ú ÒÔ / ½áβµÄÊÇĿ¼
¢Û ÒÔ / ¿ªÍ··ÀÖ¹µÝ¹é
¢Ü ÒÔ / ¿ªÍ·±íʾȡ·´
¢Ý ¿ÉÒÔʹÓà glob ģʽ½øÐÐÎļþºÍÎļþ¼ÐµÄÆ¥Åä(glob Ö¸¼ò»¯Á˵ÄÕýÔò±í´ïʽ)¡£
ËùνµÄ glob ģʽÊÇÖ¸¼ò»¯Á˵ÄÕýÔò±í´ïʽ£º
¢Ù ÐǺŠ* Æ¥ÅäÁã¸ö»ò¶à¸öÈÎÒâ×Ö·û¡£
¢Ú [abc] Æ¥ÅäÈκÎÒ»¸öÁÐÔÚ·½À¨ºÅÖеÄ×Ö·û (´Ë°¸ÀýÆ¥ÅäÒ»¸ö a »òÆ¥ÅäÒ»¸ö b »òÆ¥ÅäÒ»¸ö c)¡£
¢Û ÎʺŠ? ֻƥÅäÒ»¸öÈÎÒâ×Ö·û¡£
¢Ü ÔÚ·½À¨ºÅÖÐʹÓö̻®Ïß·Ö¸ôÁ½¸ö×Ö·û£¬ ±íʾËùÓÐÔÚÕâÁ½¸ö×Ö·û·¶Î§Äڵͼ¿ÉÒÔÆ¥Åä(±ÈÈç [0-9] ±íʾƥÅäËùÓÐ 0 µ½ 9 µÄÊý×Ö)¡£
¢Ý Á½¸öÐǺŠ** ±íʾƥÅäÈÎÒâÖмäĿ¼(±ÈÈç a/**/z ¿ÉÒÔÆ¥Åä a/z ¡¢ a/b/z »ò a/b/c/z µÈ)¡£
18. .gitignore ÎļþµÄÀý×Ó
#ºöÂÔËùÓеÄ.aÎļþ *.a #µ«¸ú×ÙËùÓеÄ1ib.a£¬¼´±ãÄãÔÚÇ°ÃæºöÂÔÁË.aÎļþ !lib.a ¶þÖ»ºöÂÔµ±Ç°Ä¿Â¼Ï嵀 TODOÎļþ£¬¶ø²»ºöÂÔ subdir/TODO /TOD0 #ºöÂÔÈκÎĿ¼ÏÂÃûΪbuildµÄÎļþ¼Ð build/ #ºöÂÔdoc/notes.txt,µ«²»ºöÂÔdoc/server/arch.txt doc/*.txt # ºöÂÔdoc/ Ŀ¼¼°ÆäËùÓÐ×ÓĿ¼ÏµÄ.pdfÎļþ doc/**/*.pdf
Èç¹ûÏ£Íû»Ø¹ËÏîÄ¿µÄÌá½»ÀúÊ·£¬¿ÉÒÔʹÓà git log Õâ¸ö¼òµ¥ÇÒÓÐЧµÄÃüÁî¡£
#°´Ê±¼äÏȺó˳ÐòÁгöËùÓеÄÌá½»ÀúÊ·£¬×î½üµÄÌá½»ÅÅÔÚ×îÉÏÃæ git log #ֻչʾ×îеÄÁ½ÌõÌá½»ÀúÊ·£¬Êý×Ö¿ÉÒÔ°´Ðè½øÐÐÌîд git log -2 # ÔÚÒ»ÐÐÉÏչʾ×î½üÁ½ÌõÌá½»ÀúÊ·µÄÐÅÏ¢ git log -2 --pretty=oneline # ÔÚÒ»ÐÐÉÏչʾ×î½üÁ½ÌõÌá½»ÀúÊ·µÄÐÅÏ¢£¬²¢×Ô¶¨ÒåÊä³öµÄ¸ñʽ # %h Ìá½»µÄ¼òд¹þÏ£Öµ %an×÷ÕßÃû×Ö %ar×÷ÕßÐÞ¶©ÈÕÆÚ£¬°´¶à¾ÃÒÔǰµÄ·½Ê½ÏÔʾ %sÌύ˵Ã÷ git log -2 --pretty=format:"%h | %an | %ar | %s"
#ÔÚÒ»ÐÐÉÏչʾËùÓеÄÌá½»ÀúÊ· git log --pretty=oneline #ʹÓà git reset--hardÃüÁ¸ù¾ÝÖ¸¶¨µÄÌá½»ID »ØÍ˵½Ö¸¶¨°æ±¾ git reset --hard <CommitID> #Ôھɰ汾ÖÐʹÓÃgit reflog--pretty=oneline ÃüÁ²é¿´ÃüÁî²Ù×÷µÄÀúÊ· git reflog --pretty=oneline #Ôٴθù¾Ý×îеÄÌá½»ID£¬Ìø×ªµ½×îеİ汾 git reset --hard <CommitID>
±±¾©Ð£Çø