| ±à¼ÍƼö: |
±¾ÎÄÀ´×Ôibm£¬ÎÄÕ´ӸÅÄîµÄ½Ç¶È½éÉܰ汾¿ØÖÆÏµÍ³¡¢Git
ºÍ GitHub£¬²¢×ÅÖØÍ¨¹ýһЩʵÑéÀ´ÑÝʾ Git µÄ»ù´¡ÌØÐÔ¡£ |
|
ǰÑÔ
Git ÊÇĿǰҵ½ç×îÁ÷Ðеİ汾¿ØÖÆÏµÍ³£¨Version Control System£©£¬¶ø GitHub
ÊÇ¿ªÔ´´úÂëÍÐ¹ÜÆ½Ì¨µÄÇ̳þ¡£Ô½À´Ô½¶àµÄ´ÓÒµÕß¡¢´ÓÒµÍŶÓÒÔ¼°¿ªÔ´¹±Ï×ÕßÊ×Ñ¡¶þÕßÓÃÓÚ¹ÜÀíÏîÄ¿´úÂë¡£±¾ÎÄÊ×ÏÈ´Ó¸ÅÄîµÄ½Ç¶È½éÉܰ汾¿ØÖÆÏµÍ³¡¢Git
ºÍ GitHub£¬²¢×ÅÖØÍ¨¹ýһЩʵÑéÀ´ÑÝʾ Git µÄ»ù´¡ÌØÐÔ£¬Ê¹ÄúÄܹ»¶Ô Git ºÍ GitHub
ÓиüÇåÎúµÄÈÏʶ¡£
Git ºÍ GitHub Çø±ðºÍÁªÏµ
һЩ³õ´Î½Ó´¥ Git ºÍ GitHub µÄ´ÓÒµÕß³£³£½« Git ºÍ GitHub ¶þÕß»ìÏý¶øÌ¸¡£¶þÕßËäÈ»ÁªÏµÉõ½ô£¬µ«´Ó±¾ÖÊÉÏÊÇÁ½¸ö²»Í¬µÄ¸ÅÄî¡£
Git ÊÇÒ»¸ö¿ªÔ´µÄ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³¡£¶ø GitHub ±¾ÖÊÉÏÊÇÒ»¸ö´úÂëÍÐ¹ÜÆ½Ì¨£¬ËüÌṩµÄÊÇ»ùÓÚ
Git µÄ´úÂëÍйܷþÎñ¡£¶ÔÓÚÒ»¸öÍŶÓÀ´Ëµ£¬¼´Ê¹²»Ê¹Óà GitHub£¬ËûÃÇÒ²¿ÉÒÔͨ¹ý×Ô¼º´î½¨ºÍ¹ÜÀí Git
·þÎñÆ÷À´½øÐдúÂë¿âµÄ¹ÜÀí£¬ÉõÖÁ»¹ÓÐһЩÆäËüµÄ´úÂëÍйÜÉ̿ɹ©Ñ¡Ôñ£¬Èç GitLab£¬BitBucket
µÈ¡£ÖµµÃÒ»ÌáµÄÊÇ Git ×÷Ϊһ¸ö¿ªÔ´ÏîÄ¿£¬Æä´úÂë±¾Éí¾Í±»ÍйÜÔÚ GitHub ÉÏ£¬Èç¹ûÄú¸ÐÐËȤ£¬¿ÉÒÔÉÏÈ¥Ò»¹ÛÆäÕæÈÝ¡£Git
ÏîÄ¿µØÖ·£ºhttps://github.com/git
°æ±¾¿ØÖÆÏµÍ³¼ò½é
ÔÚÏÖ´úÈí¼þÏîÄ¿ÖУ¬°æ±¾¿ØÖÆÏµÍ³ÊÇÏîÄ¿ÅäÖùÜÀí²»¿É»òȱµÄÒ»²¿·Ö£¬ÉõÖÁÊÇÆäºËÐŤ¾ß¡£°æ±¾¿ØÖÆ×îÖ÷ÒªµÄÈÎÎñÊÇ×·×ÙÎļþµÄ±ä¸ü£¬ÎÞÂÛÊÇÓ¦ÓÃϵͳԴ´úÂë¡¢ÏîÄ¿ÅäÖÃÎļþ£¬»¹ÊÇÏîÄ¿¹ý³ÌµÄ¿ª·¢Îĵµ£¬ÉõÖÁÊÇÍøÕ¾½çÃæÍ¼Æ¬¡¢Logo£¬¶¼¿ÉÒÔÇÒÓ¦¸Ã±»°æ±¾¿ØÖÆÏµÍ³Ëù¹ÜÀíÆðÀ´£¬ÒÔ·½±ãÎÒÃÇÔÚÏîÄ¿µÄÉúÃü¸÷ÖÜÆÚÄܹ»×·×Ù¡¢²é¿´µ½Èí¼þϵͳµÄ±ä¸üºÍÑݽø¡£°æ±¾¿ØÖÆÏµÍ³ÁíÒ»¸öÖØÒªµÄ×÷ÓÃÊÇ·½±ã¿ª·¢Õß½øÐÐÐͬ¿ª·¢£¬Ê¹µÃÏîÄ¿Öи÷¿ª·¢ÕßÄܹ»ÔÚ±¾µØÍê³É¿ª·¢¶ø×îÖÕͨ¹ý°æ±¾¿ØÖÆÏµÍ³½«¸÷¿ª·¢ÕߵŤ×÷ºÏ²¢ÔÚÒ»Æð½øÐйÜÀí¡£
¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³
ÔçÆÚµÄ°æ±¾¿ØÖÆÏµÍ³´ó¶àÊǼ¯ÖÐʽ£¨Centralized£©°æ±¾¿ØÖÆÏµÍ³¡£Ëùν¼¯ÖÐʽ£¬¼´ÊÇ´ËÀàϵͳ¶¼ÓÐÒ»¸öµ¥Ò»µÄ¼¯ÖйÜÀíµÄ·þÎñÆ÷¡£Ôڸ÷þÎñÆ÷Éϱ£´æ×ÅÏîÄ¿ËùÓÐÎļþÒÔ¼°ÎļþµÄÀúÊ·°æ±¾£¬¶ø¸÷¿ª·¢Õß¿ÉÒÔͨ¹ýÁ¬½Óµ½¸Ã·þÎñÆ÷¶ÁÈ¡²¢ÏÂÔØµ½ÎļþµÄ×îа汾£¬Ò²¿ÉÒÔ¼ìË÷ÎļþµÄÀúÊ·°æ±¾¡£¿ª·¢Õß³£³£¿ÉÒÔÖ»ÐèÒªÏÂÔØËûÃÇËùÐèÒªµÄÎļþ¡£Í¨¹ýÁ¬½Ó¼¯ÖÐʽ·þÎñÆ÷À´»ñÈ¡ÎļþºÍÎļþ¸üÐÂÊǼ¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³µÄ±ê×¼×ö·¨¡£Òµ½çÖ÷Á÷µÄ¼¯ÖÐʽ°æ±¾¿ØÖÆÏµÍ³°üÀ¨
CVS¡¢SVN¡¢Perforce µÈ¡£
¼¯ÖÐʽ°æ±¾¿ØÖƺܴó³Ì¶ÈÉϽâ¾öÁ˰汾¿ØÖƺÍÐͬ¿ª·¢µÄÎÊÌ⣬µ«ÊÇËüÒ²ÓÐÖØ´óµÄȱµã¡£Èç¹ûÖÐÑë·þÎñÆ÷³öÏÖå´»ú£¬ÄÇô¿ª·¢Õß½«ÎÞ·¨Ìá½»´úÂ룬ҲÎÞ·¨½øÐÐÐͬ¹¤×÷£¬¸üÎÞ·¨²é¿´ÎļþÀúÊ·¡£Èç¹û·þÎñÆ÷³öÏÖ¸üÑÏÖØµÄ´ÅÅÌË𻵣¬ÓÖûÓнøÐÐÇ¡µ±µÄ±¸·Ý£¬ÄÇôºÜ´ó¿ÉÄܽ«¶ªÊ§µôÏîÄ¿ÎļþÒÔ¼°ÏîÄ¿µÄ±ä¸üÀúÊ·¡£¶ø¸÷Ðͬ¿ª·¢ÕßÔÚ×Ô¼º±¾µØÒòΪҲֻÓе±Ç°°æ±¾µÄÎļþ£¬»òÕßÖ»Óв¿·ÖÎļþ£¬ºÜÄѸù¾Ý¸÷¿ª·¢Õߵı¾µØ¿â¶ÔÏîÄ¿µÄÀúÊ·¼Ç¼½øÐлָ´¡£
·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³
Ïà±È½Ï¼¯ÖÐʽµÄ°æ±¾¿ØÖÆ£¬Ä¿Ç°Òµ½ç×îÁ÷Ðеİ汾¿ØÖÆÏµÍ³ÊÇ·Ö²¼Ê½£¨Distributed£©°æ±¾¿ØÖÆÏµÍ³£¬Æä×î´óµÄÌØµãÊǸ÷¿ª·¢Õß±¾µØËù¸´ÖƵIJ»½ö½öÊǵ±Ç°×îа汾µÄÎļþ£¬¶øÊǰѴúÂë²Ö¿âÍêÕûµØ´Ó·þÎñÆ÷ÉϿˡÁËÏÂÀ´¡£¸÷¿ª·¢Õß±¾µØÓµÓдúÂë²Ö¿âËùÓеÄÎļþÒÔ¼°ÎļþÀúÊ·ºÍ±ä¸üÐÅÏ¢¡£ÕâÑù¼´Ê¹·þÎñÆ÷³öÏÖå´»ú£¬Ò²²»Ó°Ï쿪·¢Õß±¾µØ¿ª·¢£¬¿ª·¢ÕßÒ²¿ÉÒÔËæÊ±²é¿´ÎļþµÄ¸÷ÀúÊ·°æ±¾¡£ÉõÖÁ·þÎñÆ÷³öÏÖ¹ÊÕϵ¼ÖÂÊý¾Ý¶ªÊ§Ê±£¬ÏîÄ¿×éÒ²ºÜÈÝÒ׸ù¾Ý¿ª·¢Õߵı¾µØ´úÂë¿â»Ö¸´³öËùÓÐÎļþºÍÎļþµÄÀúÊ·±ä¸ü¼Ç¼¡£
Git ÊÇÒµ½çĿǰ×îΪÁ÷Ðеķֲ¼Ê½°æ±¾¿ØÖÆÏµÍ³£¬³ý´ËÖ®Í⻹ÓÐ Mercurial¡¢BitKeeper
µÈ¡£Git Æäʵ¾ÍÊÇ Linus Torvalds ¸ù¾Ý BitKeeper µÄÉè¼ÆÀíÄî¶øÖØÐÂÉè¼Æ²¢Ö÷µ¼¿ª·¢¶ø³ÉµÄ¡£ÔÚËæºóµÄÕ½ÚÖлáÒÔ
Git ΪÀý½øÒ»²½½éÉÜ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³µÄ»úÖÆ¡£Èç¹ûÄú¸ÐÐËȤ¿ÉÒÔÈ¥²éÔÄһϠLinus Torvalds¡¢BitKeeper
ºÍ Git Ö®¼äµÄȤÊ¡£
Àí½â Git µÄ·Ö²¼Ê½°æ±¾¿ØÖÆ
ÔçÆÚÎÒÔÚ½Ó´¥ Git ʱ£¬³£³£ÎªÆäËùνµÄ·Ö²¼Ê½¸Ðµ½À§»ó¡£´ó²¿·ÖÈËÐÄÄ¿Öеķֲ¼Ê½µÄ¸ÅÄî¿ÉÄܸü¶àÀ´×ÔÓÚ·Ö²¼Ê½¼ÆËã¡£·Ö²¼Ê½¼ÆËãʹµÃ³ÌÐò¿ÉÒÔͨ¹ýijÖÖ»úÖÆ·Ö²¼µØÔËÐÐÔÚ¶ą̀¼ÆËã»úÉÏ´Ó¶ø×î´ó»¯µØÀûÓöą̀¼ÆËã»úµÄ¼ÆËãÄÜÁ¦¡¢´æ´¢ÄÜÁ¦¡£·Ö²¼Ê½¼ÆËãÊǽ«¼ÆËãÈÎÎñ·Ö¸î³É¶à¸ö¿ÉÒÔ¶ÀÁ¢ÔËÐеÄ×ÓÈÎÎñ£¬È»ºó½«×ÓÈÎÎñ·Ö²¼ÔÚ¶ą̀¼ÆËã»ú¶ÀÁ¢²¢ÐÐÔËÐУ¬×îºóͨ¹ýijÖֺϲ¢»úÖÆ½«ËùÓмÆËã»úµÄ¼ÆËã½á¹û×îÖպϲ¢ÆðÀ´¡£Òò´Ëµ¥¶ÀÀ´¿´Õâ¶ą̀¼ÆËã»úÖÐÆäÖÐijһ̨£¬Ëü²¢Ã»ÓÐÓµÓгÌÐòµÄËùÓÐÊý¾ÝºÍËùÐè×ÊÔ´¡£´Ó±íÃæ¿´ÕâËÆºõºÍ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³Öеķֲ¼Ê½¸ÅÄî½ØÈ»Ïà·´¡£±Ï¾¹·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³"ºÅ³Æ"¿Ë¡һ´Î´úÂë¿â±¾µØ¾ÍÓµÓÐÁËÒ»¸öÍêÕûµÄ´úÂë¿â¸±±¾£¬ÕâÌýÆðÀ´ÓÐЩº§ÈËÌýÎÅ¡£
ÆäʵÎÒÃÇ¿ÉÒÔ³¢ÊÔ´ÓÒÔÏÂÁ½¸ö·½ÃæÀ´Àí½â£º
ÆäÒ»£¬ÔÚ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³ÖУ¬¿Ë¡ÁË´úÂë¿âµÄ¸÷±¾µØ¿ª·¢ÕßÓµÓÐÁË·þÎñÆ÷·Ö·¢¹ýÀ´£¨Distributed£©µÄÍêÕûµÄ´úÂë¿â¸±±¾£¬Ê¹µÃ¿ª·¢ÕßÃÇ¿ÉÒÔ¶ÀÁ¢ÓÚÖ÷·þÎñÆ÷Ö®Íâ½øÐпª·¢ÈÎÎñ£¬ÕâºÍ·Ö²¼Ê½¼ÆËã¸ÅÄîÖУ¬¸÷¼ÆËã»ú¶ÀÁ¢½øÐмÆËãÈÎÎñµÄÀíÄı¶øºÏ¡£Í¬Ê±Ò²·ûºÏ·Ö²¼Ê½´æ´¢µÄÀíÄһ¸öÎļþ¶à·Ý¸±±¾¡£
Æä¶þ£¬¸÷¿ª·¢ÕßÔÚÍê³É¿ª·¢ÈÎÎñºóÓÖÐèÒª½«×Ô¼º±¾µØÐ޸ĺóµÄ´úÂë¿âºÏ²¢£¨Merge£©µ½Ö÷·þÎñÆ÷ÉÏ¡£ÕâÒ²Óë·Ö²¼Ê½¼ÆËã¸ÅÄîÖÐ×îÖÕÐèÒª½«¸÷¼ÆËã»úµÄ¼ÆËã½á¹ûºÏ²¢ÆðÀ´µÄ¸ÅÄîÊÇÏà·ûµÄ¡£
Òò´ËÕâÒ²¾Í²»ÄÑÀí½â·Ö²¼Ê½°æ±¾¿ØÖÆÖеķֲ¼Ê½¸ÅÄîÁË¡£
ÏÂÃæÍ¨¹ý Git µÄÒ»¸öʵÑéÀ´³¢ÊÔÀí½âʲôÊǿˡÁËÍêÕûµÄ´úÂë¿â¸±±¾¡£
Ê×ÏÈÎÒÔÚ GitHub ÉϽ¨Á¢ÁËÒ»¸öÓÃÓÚʵÑéµÄ¹«¿ª´úÂë¿â¡£´úÂë¿âÖÐĿǰֻ°üº¬ÓÐÉÙÁ¿µÄÔ´ÎļþºÍÌá½»¼Ç¼£¬ÈçÇåµ¥
1 Ëùʾ¡£ÊµÑé²Ö¿âµØÖ·£ºhttps://github.com/caozhi/repo-for-developerworks
Çåµ¥ 1. ²é¿´±¾µØ´úÂë¿âÖÐËùÓµÓеÄÎļþ
caozhi @ repo-for-developerworks$
ls -al
total 24
drwxr-xr-x 7 caozhi staff 224 8 4 23:43 .
drwxr-xr-x 3 caozhi staff 96 8 4 23:43 ..
drwxr-xr-x 13 caozhi staff 416 8 4 23:43 .git
-rw-r--r-- 1 caozhi staff 278 8 4 23:43 .gitignore
-rw-r--r-- 1 caozhi staff 39 8 4 23:43 README.md
-rw-r--r-- 1 caozhi staff 56 8 4 23:43 helloworld.sh
drwxr-xr-x 3 caozhi staff 96 8 4 23:43 src |
×¢Òâ´úÂë¿âÖÐ .git Ŀ¼Öаüº¬ÁË´úÂë¿âËùÓеĴ洢¶ÔÏóºÍ¼Ç¼¡£Èç¹ûÏëÒª±¸·Ý»ò¸´ÖÆÒ»¸ö´úÂë¿â£¬ÔòÖ»ÐèÒª½«Õâ¸öĿ¼¿½±´ÏÂÀ´¼´¿É¡£
Òò´Ë¸Ã´úÂë¿âÖÐÖ»ÓÐ .gitignore¡¢README.md¡¢helloworld.sh ÒÔ¼° src
Ŀ¼ÊÇ´úÂë¿âËù¹ÜÀíµÄÔ´Îļþ¡£ÎÒÃǽ«³ý .git Ŀ¼֮ÍâµÄËùÓÐÎļþÈ«²¿É¾³ý£¬ÈçÇåµ¥ 2 Ëùʾ£º
Çåµ¥ 2. ɾ³ý³ý .git Ŀ¼֮ÍâµÄÈ«²¿Ô´Îļþ
| caozhi@ repo-for-developerworks$
rm -rf .gitignore README.md helloworld.sh src |
½ÓÏÂÀ´ÎÒÃǶϵôµçÄÔµÄÍøÂçÁ¬½ÓʹµÃ±¾µØ´úÂë¿âÎÞ·¨Óë·þÎñÆ÷½øÐн»»¥£¬ÒÔÑéÖ¤ÊÇ·ñËùÓеÄÎļþ¿ÉÒÔÖ»´Ó±¾µØ¾Í½øÐлָ´¡£¶ÏÍøÖ®ºóÖ´ÐÐ
git pull ³¢ÊÔÓë·þÎñÆ÷½øÐÐͬ²½£¬ÃüÁî½á¹ûÌáʾ£ºNetwork is down£¬ÈçÇåµ¥ 3 Ëùʾ£º
Çåµ¥ 3. ¶ÏÍøÖ®ºó³¢ÊÔ git pull ͬ²½´úÂë
caozhi@ repo-for-developerworks$
git pull
ssh: connect to host github.com port 22: Network
is down
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists. |
²»Óõ£ÐÄ´úÂë¿â±»ÆÆ»µ£¬ÈçǰËùÊö£¬.git Ŀ¼Öаüº¬ÓдúÂë¿âËùÓеÄÎļþ¶ÔÏóºÍ¼Ç¼£¬Òò´ËÎÒÃÇ¿ÉÒÔºÜÈÝÒ×µÄͨ¹ýÃüÁÆä½øÐлָ´¡£
Ê×ÏÈ£¬ËäÈ»Îļþ±»É¾³ýÇÒÍøÂçÎÞ·¨Á¬½Ó£¬ÎÒÃÇÒÀÈ»¿ÉÒÔ²éѯµ½ÀúÊ·Ìá½»¼Ç¼£¬Èçͼ 1 Ëùʾ£º
ͼ 1. ²é¿´Ìá½»ÀúÊ·

È»ºóÎÒÃÇ¿ÉÒÔͨ¹ý git reset --hard commit_id ÃüÁî»Ö¸´µ±Ç°´úÂë¿âµ½Ä¿±ê
commit µÄ״̬£¬ÈçÇåµ¥ 4 Ëùʾ£º
Çåµ¥ 4. Ö´ÐÐ git reset --hard ÃüÁî
caozhi@ repo-for-developerworks$
git reset --hard d774ecf5575bd5434e0cfadfcda0aef0ab147c92
HEAD is now at d774ecf changes
caozhi@ repo-for-developerworks$ ll -a
total 24
drwxr-xr-x 7 caozhi staff 224 8 5 10:48 .
drwxr-xr-x 3 caozhi staff 96 8 4 23:43 ..
drwxr-xr-x 15 caozhi staff 480 8 5 10:48 .git
-rw-r--r-- 1 caozhi staff 278 8 5 10:48 .gitignore
-rw-r--r-- 1 caozhi staff 39 8 5 10:48 README.md
-rw-r--r-- 1 caozhi staff 56 8 5 10:48 helloworld.sh
drwxr-xr-x 3 caozhi staff 96 8 5 10:48 src |
´ÓÔËÐнá¹ûÎÒÃÇ¿ÉÒÔ¿´³ö£¬´úÂë¿âÖб»É¾³ýµÄÎļþÒѾ±»»Ö¸´»ØÀ´£¬¶øÇÒÊÇÔÚÎÞÈκÎÍøÂçÁ¬½Ó¡¢Ã»ÓкͷþÎñÆ÷½øÐн»»¥µÄÇé¿öϽøÐеĻָ´£¡
ͨ¹ýÕâ¸öʵÑéÏàÐÅÄú¶Ô Git ¿Ë¡ÁËÍêÕûµÄ´úÂë¿â¸±±¾Óиü¼ÓÖ±¹ÛµÄÀí½â¡£ÈçÓÐÐËȤ£¬ÄúÒ²¿É³¢ÊÔͨ¹ý git
reset ÃüÁ´úÂë¿â»Ö¸´µ½ÈÎÒâÄ¿±ê commit µÄ״̬¡£±¾ÎľͲ»ÔÙ׸Êö¡£
Git »ù´¡ÌØÐÔ
±¾Õ½«»á½éÉÜ Git ×÷Ϊ°æ±¾¿ØÖÆÏµÍ³µÄ¼¸´ó»ù´¡ÌØÐÔ²¢»á½èÖúһЩʵÑéÀ´°ïÖúÀí½âÕâÐ©ÌØÐÔ¡£×¢Ò⣺±¾Õ½ڽéÉܵĻù´¡ÌØÐÔÆäÄÚÈÝ×ܽá×Ô
ProGit Õâ±¾Ê飬ÈçÓÐÐËȤÄúÒ²¿É×ÔÐвéÔÄÔÎÄ¡£
¿Ë¡һ´Î¼´»ñµÃ´úÂë¿âµÄÍêÕû¸±±¾
Õâ¸öÌØÐÔÊÇËùÓзֲ¼Ê½°æ±¾¿ØÖÆÏµÍ³µÄÌØÐÔÖ®Ò»¡£Git Ò²²»ÀýÍâ¡£±¾ÎÄÔÚÉÏÒ»¸öÕ½ÚÖÐÒѾ¶Ô¸ÃÌØÐÔ½øÐÐÁËÏêϸµÄÃèÊöºÍ·ÖÎö£¬Ôڴ˾Ͳ»ÔÙ׸Êö¡£
Ö±½Ó¼Ç¼¿ìÕÕ¶ø·Ç²îÒì±È½Ï
°æ±¾¿ØÖÆÏµÍ³ÖвÉÈ¡ºÎÖÖ²ßÂÔÀ´¹ÜÀíÎļþµÄÀúÊ·°æ±¾ÊÇϵͳµÄºËÐļ¼ÊõÖ®Ò»¡£Ä¿Ç°ºÜ¶à´«Í³µÄ°æ±¾¿ØÖÆÏµÍ³Èç SVN¡¢Perforce
µÈ²ÉÓûùÓÚÔöÁ¿µÄ·½Ê½À´¼Ç¼ÿ´Î±ä¸ü¡£Ã¿´Î±ä¸ü²úÉú¼´Éú³ÉÒ»¸ö²îÒì¶ÔÏó£¬×îÖÕ×îа汾µÄÎļþ¿ÉÒÔÓÉ×î³õµÄ»ù´¡ÎļþºÍÕâ¸öÎļþËùÀÛ»ýµÄ²îÒìÀ´×é³É¡£Èçͼ
2 Ëùʾ£¨½ØÈ¡×Ô ProGit Ò»Ê飩£º
ͼ 2. ÔöÁ¿·½Ê½

¶ø Git ²ÉÓõÄÊÇÀàËÆÓÚ¿ìÕÕÁ÷£¨Streams of Snapshot£©µÄ·½Ê½À´´æ´¢Êý¾Ý¡£Git
ÔÚÒ»¸öÎļþ·¢ÉúÐÞ¸Äʱ»áÉú³ÉÒ»¸öеÄÍêÕûµÄÎļþ¶ÔÏ󣬵±È»¾ÉµÄÎļþ¶ÔÏóÒ²»á±£ÁôÏÂÀ´×÷ΪÀúÊ·°æ±¾¡£¶ÔÓÚδ·¢Éú¸ü¸ÄµÄÎļþ£¬Git
ÔÚа汾µÄ´úÂë¿âÖÐÖ»ÊDZ£ÁôÁËÒ»¸öÁ´½ÓÖ¸Ïò֮ǰ´æ´¢µÄÎļþ¡£ÀýÈçͼ 3 £¨½ØÈ¡×Ô ProGit Ò»Ê飩Ëùʾ°æ±¾
2 ÖУ¬¶Ô A ÎļþºÍ C Îļþ¶¼½øÐÐÁËÐ޸ģ¬Git Éú³ÉÁËÁ½¸öеÄÍêÕûµÄÎļþ¶ÔÏó A1 ºÍ C1£¬¶ø
B Îļþδ·¢Éú¸ü¸Ä£¬ÄÇô°æ±¾ 2 ÖоÍÖ»¼Ç¼ÁËÒ»¸öÖ¸Ïò B ÎļþµÄÁ´½Ó¡£»ùÓÚÎļþ¶ÔÏó A1 ºÍ C1
ÒÔ¼°Á¬½Ó B£¬Git ¾ÍÉú³ÉÁËÒ»¸ö°æ±¾ 2 µÄ¿ìÕÕ¡£
ͼ 3. ¿ìÕÕ·½Ê½

´úÂë¿âµÄ´æ´¢ºÍ¸´ÖƲ¢·Ç°æ±¾¿ØÖÆÏµÍ³µÄÆ¿¾±ËùÔÚ£¬·ÖÎöÎļþµÄ²îÒì¡¢²é¿´´úÂë¿âµÄ¸÷ÀúÊ·°æ±¾³£³£ÊÇÕæÕýµÄÆ¿¾±ËùÔÚ¡£»ùÓÚÕâÖÖ¿ìÕÕÁ÷µÄÉè¼Æ£¬Git
¿ÉÒÔ¿ìËٵػñÈ¡µ½Ä³Ò»Ê±¿ÌµÄ´úÂë¿âËùÓÐÎļþ£¬Í¬Ê±Ò²¿ÉÒÔ¿ìËٵؽøÐÐÎļþ¸÷¸öÀúÊ·°æ±¾µÄ²îÒì±È¶Ô£¬ÉõÖÁÊǸ÷ÀúÊ·°æ±¾»òÕ߸÷·ÖÖ§µÄ´úÂë¿âÕûÌå²îÒì±È¶Ô¡£ÏëÏñÒ»ÏÂÈç¹ûÊÇ´«Í³µÄÔöÁ¿´æ´¢·½Ê½£¬Ò»¸ö´úÂë¿â¾¹ý³¤ÆÚµÄ¿ª·¢£¬¼ÙÉè´úÂë¿âÒѾÓÐ
10 Íò¸öÎļþ£¬Ã¿¸öÎļþƽ¾ù¾ÀúÁË 100 ´ÎÐ޸ģ¬ÄÇôҪ¼ìË÷×îеĴúÂë¿âºÍÔʼµÄ´úÂë¿âµÄ²îÒ죬¾ÍÐèÒª¼ìË÷³ö
1000 Íò¸öÔöÁ¿²ÅÄÜ×îÖճɹ¦±È¶Ô£¬ÕâÐèÒªÄÑÒÔÏëÏóµÄʱ¼ä³É±¾¡£¶ø Git ¾Í²»´æÔÚÕâ¸öÎÊÌ⣬Git
Ö»ÐèÒª¼ìË÷³ö×îеĴúÂë¿â¿ìÕÕºÍÔʼ´úÂë¿â¿ìÕÕÖ±½Ó½øÐбȶԼ´¿É£¬ÔÙÒÀÍÐÓÚ Git µÄ diff Ëã·¨£¨Myers
Ëã·¨£©£¬Git ¿ÉÒÔ¸ßЧ¿ìËٵؼìË÷³ö¶þÕߵIJîÒìÀ´¡£
½üºõËùÓвÙ×÷¶¼ÊDZ¾µØÖ´ÐÐ
Git ÁíÒ»¸öÊ®·Ö¸ßЧµÄÔÒòÊÇËü¼¸ºõËùÓеIJÙ×÷¶¼ÊÇÔÚ±¾µØÖ´ÐУ¬³ýÁ˼¸¸ö¼«ÉÙµÄÐèÒª¸ú·þÎñÆ÷ͬ²½´úÂëµÄ²Ù×÷£¨push¡¢pull¡¢fetch£©¡£ÕâÖÖ±¾µØÖ´ÐеÄÄÜÁ¦ÕýÊÇÀ´×ÔÓÚ¿Ë¡һ´Î¼´»ñµÃ´úÂë¿âµÄÍêÕû¸±±¾ÕâÒ»ÌØÐÔ¡£ÔÚ±¾ÎÄÇ°ÃæµÄÕ½ÚÖжÔ
Git µÄ±¾µØ²Ù×÷Ò²½øÐÐÁËʵÑ飬ËùÒÔÔÚ´ËÒ಻½øÐÐ׸Êö¡£
³ÏÈ»£¬ÀàËÆ SVN ºÍ Perforce Ò»ÀàµÄ¼¯ÖÐʽ·Ö²¼ÏµÍ³£¬µ±Ã»ÓÐÍøÂçÁ¬½ÓʱÎÒÃÇÒÀÈ»¿ÉÒÔ¶Ô±¾µØ´úÂë½øÐÐÐ޸쬵«È´ÎÞ·¨Ìá½»´úÂ룬¸ü²»ÓÃ˵²éѯÌá½»ÀúÊ·£¬±È¶Ô°æ±¾²îÒì¡£ÔÚÈÕ³£µÄ¿ª·¢¹¤×÷ÖУ¬Ð޸ĴúÂëÖ»Êǹ¤×÷µÄÒ»²¿·Ö£¬»¹Óкܴ󲿷ֹ¤×÷ÐèÒª²»¶ÏÓë´úÂë¿â¸÷ÀúÊ·°æ±¾½øÐн»»¥¡£ÔÚ¼¯ÖÐʽ·Ö²¼ÏµÍ³ÖУ¬µ±·¢ÉúÍøÂçÒ쳣ʱ£¬ÕâÀ๤×÷¾Í¼¸ºõÎÞ·¨½øÐдӶøºÜ¿ÉÄܵ¼Ö¿ª·¢Öжϡ£¼´Ê¹ÊÇÍøÂçÕý³£µÄÇé¿öÏ£¬¼¯ÖÐʽ·Ö²¼ÏµÍ³µÄ¹¤×÷ЧÂÊÒ²Ô¶µÍÓÚ
Git µÄ±¾µØ»¯Ö´ÐС£
ʹÓà SHA-1 ¹þÏ£Öµ±£Ö¤ÍêÕûÐÔ
Git ÖÐËùÓÐÊý¾Ý¶ÔÏó£¨Ïê¼ûÏÂÎÄ£©Ôڴ洢ǰ¶¼»á¼ÆËã SHA-1 УÑéºÍ£¬Éú³ÉÒ»¸ö 40 λµÄÊ®Áù½øÖƵĹþÏ£Öµ×Ö·û´®¡£»ùÓÚ´ËУÑéºÍ£¬¾Í²»¿ÉÄÜÔÚ
Git ²»ÖªÇéµÄÇé¿öϸü¸ÄÈκÎÎļþÄÚÈÝ¡£Git ÖÐºÜ¶àµØ·½»áʹÓõ½ÕâÖÖ¹þÏ£Öµ£¬ÈçÇ°ÃæÊµÑéÖÐÎÒÃÇʵ¼ÊÉϾÍÓõ½ÁË
commit µÄ¹þÏ£Öµ id À´»¹Ô´úÂë¿â¡£
½ÓÏÂÀ´ÎÒÃÇÓÃÁíһϵÁÐСʵÑéÀ´ÑÝʾ²¢ÑéÖ¤ Git µÄ²¿·Ö»ù´¡ÌØÐÔ£º
¼Ç¼µÄ¿ìÕպ͸÷ÀúÊ·µÄÍêÕûÄÚÈÝ£¬¶ø·Ç¼Ç¼²îÒì±È½Ï
¹þÏ£ÖµÔÚ Git ÖеÄÖØÒª×÷ÓÃ
±¾½ÚÈÔÈ»ÒÔ repo-for-developerworks ΪÀý×Ó¡£
ǰÎÄÌáµ½£¬´úÂë¿âÖÐ.git Ŀ¼´æ´¢ÁË´úÂë¿âµÄËùÓÐÎļþºÍÐÅÏ¢¡£ÎÒÃÇ¿ÉÒԲ鿴 .git Ŀ¼½á¹¹£¬ÈçÇåµ¥
5 Ëùʾ£º
Çåµ¥ 5. ²é¿´ Git Ŀ¼½á¹¹
caozhi@.git$
tree -L 1
.
©À©¤©¤ FETCH_HEAD
©À©¤©¤ HEAD
©À©¤©¤ ORIG_HEAD
©À©¤©¤ branches
©À©¤©¤ config
©À©¤©¤ description
©À©¤©¤ hooks
©À©¤©¤ index
©À©¤©¤ info
©À©¤©¤ logs
©À©¤©¤ objects
©À©¤©¤ packed-refs
©¸©¤©¤ refs |
ÔÚ±¾ÏµÁеÄËæºóÎÄÕÂÖлá¶Ô¸ÃĿ¼ÿ¸ö×ÓÏî½øÐÐÉîÈë½éÉÜ£¬ÄúÏÖÔÚÖ»Ðè¹Ø×¢ objects Ŀ¼¡£objects
Ŀ¼´æ´¢Á˱¾µØ²Ö¿âµÄËùÓÐÊý¾Ý¶ÔÏó£¬Git ´æ´¢µÄÊý¾Ý¶ÔÏóÒ»¹²ÓÐÒÔÏÂËÄÖÖ£º
Tree£ºÀàËÆ Unix ÎļþϵͳµÄÎļþ×éÖ¯·½Ê½£¬Tree ¶ÔÏóÖмǼÁ˶à¸ö Blob ¶ÔÏó»òÕ߯äËü×Ó
Tree ¶ÔÏó¹þÏ£Öµ¡¢ÎļþÃûĿ¼ÃûµÈÔªÊý¾Ý¡£Í¨¹ý Tree ¶ÔÏó¿ÉÒÔ»¹Ô³ö´úÂë¿âµÄĿ¼½á¹¹¡£
Commit£º¼Ç¼һ¸ö commit µÄËùÓÐÐÅÏ¢¡£
Blob£º¼Ç¼ÁË´úÂë¿âÔ´ÎļþµÄÄÚÈÝ£¬²»¼Ç¼ԴÎļþµÄÈçÎļþÃûÒ»ÀàµÄÔªÊý¾Ý¡£
Tag£ºÎªÄ³Ò»¸öʱ¿ÌµÄ´úÂë¿â´òÒ»¸ö Tag£¬·½±ã¼ìË÷ÌØ¶¨µÄ°æ±¾¡£Tag ÔÚ Git ÖÐÒ²ÊÇÒÔÒ»ÖÖÊý¾Ý¶ÔÏóµÄ·½Ê½½øÐд洢¡£
objects Ŀ¼Ï´æ·ÅÁ˶à¸öÒÔ 2 λ×Ö·ûÃüÃûµÄĿ¼£¬ÔÚÕâЩĿ¼ÏÂÓÖ´æ·ÅÁË 38 λ×Ö·ûÃüÃûµÄÎļþ£¬2
λµÄǰ׺ºÍ 38 λµÄÎļþÃû¾Í×é³ÉÁË Git ÖеÄÒ»¸öÊý¾Ý¶ÔÏóµÄ¹þÏ£Öµ£¬ÈçÇåµ¥ 6 Ëùʾ£º
Çåµ¥ 6. ²é¿´ objects Ŀ¼½á¹¹
caozhi@ objects
$ tree -L 2
.
©À©¤©¤ 06
©¦ ©¸©¤©¤ dad60f87d28d220216f5891dddfdfe4af5f1a0
©À©¤©¤ 07
©¦ ©¸©¤©¤ 5c1307a44bae63a2d37c4819502c6ffdb6141b
©À©¤©¤ 16
©¦ ©¸©¤©¤ d0e292c43ca35d4ab36da6b3e1913288477076
©À©¤©¤ 22
©¦ ©¸©¤©¤ 783d07955986cab0d2195eb131d8e0047acb59
©À©¤©¤ 40
©¦ ©¸©¤©¤ 6714df7708534f67d9373821de5948ab3f5d9a
©À©¤©¤ 6d
©¦ ©¸©¤©¤ 1f98e1a9bede453ab16d6ba90428a994ebf147
©À©¤©¤ ae
©¦ ©¸©¤©¤ e311888e5572cc3d7d8b00e8f400216d26d320
©À©¤©¤ b3
©¦ ©¸©¤©¤ adac68e8b6a22f88003c226fc4746a5269a496
©À©¤©¤ b8
©¦ ©¸©¤©¤ 74d57c1df33902acb74f85d05bb5dcbb44c30a
©À©¤©¤ d4
©¦ ©¸©¤©¤ eec9c19502086dd0f42f8bb7f26feb77377d5c
©À©¤©¤ d6
©¦ ©¸©¤©¤ 96feb980566a3c03fd0f22c4b806e34a312de6
©À©¤©¤ info ## can be ignored right now
©¸©¤©¤ pack ## can be ignored right now
©À©¤©¤ pack-eff5463c4b0c56c3ea5e5c381941541d76d8e143.idx
©¸©¤©¤ pack-eff5463c4b0c56c3ea5e5c381941541d76d8e143.pack
8 directories, 8 files |
Çåµ¥ 7 µÄ½Å±¾ºËÐÄʹÓÃÁË git cat-file -t ÃüÁîÀ´²é¿´¶ÔÏóÎļþµÄÀàÐÍ¡£ÓÉ´Ë¿ÉÒÔ¿´³ö£¬ÔÚ
Git ÄÚ²¿Ê¹ÓùþÏ£Öµ×÷ΪÎļþÃûÀ´´æ´¢ËùÓеÄÊý¾Ý¶ÔÏó¡£
Çåµ¥ 7. Ö´Ðнű¾Áгö¶ÔÏóÎļþ¼°Æä¶ÔÓ¦µÄÀàÐÍ
caozhi@ objects$
find . -type f | grep -v pack | \
while read line; \
do \
var=${line//"."/""}; \
var=${var////""}; \
echo $line `git cat-file -t $var`; \
done
./b3/adac68e8b6a22f88003c226fc4746a5269a496 tree
./d6/96feb980566a3c03fd0f22c4b806e34a312de6 tree
./ae/e311888e5572cc3d7d8b00e8f400216d26d320 tree
./16/d0e292c43ca35d4ab36da6b3e1913288477076 commit
./07/5c1307a44bae63a2d37c4819502c6ffdb6141b commit
./6d/1f98e1a9bede453ab16d6ba90428a994ebf147 blob
./06/dad60f87d28d220216f5891dddfdfe4af5f1a0 blob
./d4/eec9c19502086dd0f42f8bb7f26feb77377d5c blob
./b8/74d57c1df33902acb74f85d05bb5dcbb44c30a commit
./40/6714df7708534f67d9373821de5948ab3f5d9a tree
./22/783d07955986cab0d2195eb131d8e0047acb59 tag |
ÁíÍâ¿ÉÒÔ¿´µ½ 16d0e292¡ Õâ¸ö¶ÔÏó±íʾÆäÊÇÒ»¸ö commit¡£½áºÏÌá½»ÀúÊ·¼Ç¼¿ÉÒÔ¿´µ½£¬Õâ¸ö¹þϣֵȷʵ¶ÔÓ¦ÓÚÒ»¸ö
commit id£¬ÈçÇåµ¥ 8 Ëùʾ£º
Çåµ¥ 8. ²é¿´Ìá½»ÀúÊ·
caozhi@ repo-for-developerworks/.git/objects$
git log
commit d774ecf5575bd5434e0cfadfcda0aef0ab147c92
(HEAD -> master, origin/master, origin/HEAD)
Author: caozhi <caozhi0321@gmail.com>
Date: Sat Aug 4 23:22:17 2018 +0800
changes
¡ ## Ignored some useless history
commit 16d0e292c43ca35d4ab36da6b3e1913288477076
Author: Zhi Cao <caozhi0321@gmail.com>
Date: Fri Aug 3 22:15:02 2018 +0800
Create a shell script
¡ ## Ignored some useless history |
ÔÚÇåµ¥ 9 ÖпÉÒÔ¿´µ½ 6d1f98e1¡ Õâ¸ö¶ÔÏóÊÇÒ»¸ö blob ¶ÔÏó£º
Çåµ¥ 9. ²é¿´ blob ¶ÔÏóµÄÀàÐͺÍÄÚÈÝ
caozhi@ objects$
git cat-file -t 6d1f98e1a9bede453ab16d6ba90428a994ebf147
blob
caozhi@ objects$ git cat-file -p 6d1f98e1a9bede453ab16d6ba90428a994ebf147
#!/bin/bash
echo hello world!
caozhi@ objects$ git cat-file -t d4eec9c19502086dd0f42f8bb7f26feb77377d5c
blob
caozhi@ objects$ git cat-file -p d4eec9c19502086dd0f42f8bb7f26feb77377d5c
#!/bin/bash
echo hello world!
echo hello world again! |
²é¿´¸ÃÎļþÄÚÈÝ£¬¿ÉÒÔ¿´µ½ 6d1f98e1¡ ÆäʵÊÇ helloworld.sh Õâ¸öÔ´´úÂëµÄÄÚÈÝ£¬µ«¶ÔÏó
6d1f98e1¡ ÊÇ helloworld.sh µÄÉÏÒ»¸ö°æ±¾£¬¶øÔÚËæºó²é¿´µÄ d4eec9c1¡
²ÅÊÇÆä×îа汾¡£´ÓÕâÀïÒ²ÄÜ¿´µ½ Git ÔÚ´æ´¢Îļþ²»Í¬°æ±¾Ê±£¬È·ÊµÊÇ´æ´¢Á˸÷ÀúÊ·°æ±¾È«Á¿µÄÎļþ¶ø·ÇÆäÔöÁ¿¡£
×¢Ò⣺ʵ¼Ê²Ù×÷ÖÐÒ²¿ÉÒÔʹÓùþÏ£ÖµµÄǰ°ËλËõд£¬È磺git cat-file -t 6d1f98e1¡£ÈçÓÐÐËȤ£¬Äú¿ÉÒÔ³¢ÊÔһϡ£
ÖÁ´Ë£¬ÎÒÃÇ¿´µ½ SHA1 ¹þÏ£ÖµÔÚ Git µ×²ãµÄ¾Þ´ó×÷Óã¬ËùÓжÔÏó¶¼ÒÔ¹þÏ£ÖµÀ´ÃüÃû²¢´æ´¢£¬ËùÓжÔÏóÒ²¿ÉÒÔͨ¹ý¹þÏ£ÖµÀ´½øÐмìË÷¡£Í¬Ê±ÎÒÃÇÒ²´Ó
Git µ×²ãÔÙ´ÎÑéÖ¤ÁË Git ÔÚ±¾µØ´æ´¢ÁËÎļþµÄËùÓÐÈ«Á¿ÀúÊ·°æ±¾¡£
Git Ò»°ãÖ»Ìí¼ÓÊý¾Ý
Õâ¸öÌØÐÔÖ¸µÄÊÇÕý³£Çé¿öÏÂÎÒÃÇÖ´ÐÐµÄ Git ²Ù×÷£¬¼¸ºõÖ»Íù Git ÀïÔö¼ÓÊý¾Ý¡£Òò´ËºÜÄÑÈà Git
Ö´ÐÐÈκβ»¿ÉÄæµÄ²Ù×÷£¬»òÕßÈÃËüÒÔÈκη½Ê½Çå³ýÊý¾Ý¡£Í¬ÆäËü°æ±¾¿ØÖÆÏµÍ³Ò»Ñù£¬Ã»ÓÐÌá½»µÄ¸üÐÂÓпÉÄܳöÏÖ¶ªÊ§µÄÇé¿ö£¬µ«ÊÇÒ»µ©ÎÒÃǽ«¸ü¸ÄÌá½»µ½
Git ÖÐÖ®ºó£¬¾ÍºÜÄÑÔÙ¶ªÊ§Êý¾Ý¡£
Õâ¸öÌØÐÔʹµÃÎÒÃÇ¿ÉÒÔ·ÅÐÄÇÒÓäÔõØÊ¹Óà Git£¬ÎÒÃÇ¿ÉÒÔ¾¡Ç鵨×öÈκγ¢ÊÔ¡£¼´Ê¹Îó²Ù×÷³öÏÖÊý¾Ý¶ªÊ§£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ý¸÷ÖÖÊֶν«Æä½øÐпìËÙ»Ö¸´¡£
ÔÚ ProGit Ò»ÊéÖл¹Ìáµ½ÁË Git µÄÁíÒ»¸öÌØÐÔ"ÈýÖÖ״̬"£¬¸ÃÌØÐÔÊÇÖ¸
Git ÖеÄÎļþÒ»°ãÓÐÈýÖÖ״̬£ºÒÑÌá½»£¨committed£©¡¢ÒÑÐ޸ģ¨modified£©ºÍÒÑÔݴ棨staged£©¡£ÔÚËæºóµÄϵÁÐÎÄÕÂÖн«»á½áºÏ
Git µÄÈÕ³£Ê¹ÓÃÀ´×ÅÖØ½éÉÜÒÔ°ïÖúÄúÀí½âÕâÈýÖÖ״̬£¬»¹»á¶Ô Git Ŀ¼ÒÔ¼° Git µÄ¶ÔÏó´æ´¢Ä£ÐͽøÐÐÏêϸµØ·ÖÎöºÍ½²½â¡£
GitHub ¼ò½é
GitHub ÊÇÈ«Çò×î´óµÄ¿ªÔ´´úÂëÍÐ¹ÜÆ½Ì¨£¬ÔÚ¿ªÔ´½çÓÐ×Ų»¿Éº³¶¯µÄ¶¨Î»£¬Ò²ÉîÊÜ¿ªÔ´°®ºÃÕßµÄϲ°®¡£GitHub
ƽ̨±¾ÉíÊ®·ÖÖ±¹ÛÒ×Óã¬ÆäʹÓ÷½·¨Ôڴ˾Ͳ»½øÐÐÏêÊö¡£±¾Õ¼òµ¥ÁоÙÒ»ÏÂÎÒÈÏΪµÄ GitHub һЩºÜÓÐÒâ˼»òÕߺÜÓÐÓõŦÄÜ£º
Èç¹ûֻʹÓÃÃâ·Ñ°æ£¬ÄÇôÎÞ·¨´´½¨Ë½È˲ֿ⣨Repository£©£¬Ö»ÄÜ´´½¨¿ª·Å²Ö¿â£»¿ª·Å²Ö¿â¿É±»ÈκÎÈ˿ˡ»ò
Fork¡£
¿ÉÒÔ×÷Ϊ¶ÀÁ¢¿ª·¢Õß½¨Á¢×Ô¼ºµÄ´úÂë²Ö¿â£¬ÍŶÓÐ×÷µÄ»°Ò²¿ÉÒÔͨ¹ý½¨Á¢×éÖ¯£¨Organization£©À´¹ÜÀí×é֯ϵIJֿ⡢ÍŶӡ¢³ÉÔ±¡¢È¨Ï޵ȡ£Èçͼ
4 Ëùʾ£º
ͼ 4. Ìí¼Ó²Ö¿â»ò×éÖ¯

Èç¹ûÊÇ¿ªÔ´ÏîÄ¿£¬¿ÉÒÔºÜÈÝÒ× Fork ÆäËü¿ªÔ´ÏîÄ¿µÄ´úÂë¿âµ½×Ô¼ºµÄÕ˺ÅÏ£»Ò²¿ÉÒÔÏò±ðÈË·¢Æð Pull
Request ÇëÇó£¬ÇëÇó×÷Õß½« Fork ÏÂÀ´Ö®ºóµÄ´úÂëÐ޸ĺϲ¢µ½Ô´úÂë¿âÖС£Èçͼ 5 ºÍͼ 6
Ëùʾ£¬ÎÒÃÇ¿ÉÒÔ½« Linux µÄÔ´Âë¿â Fork µ½×Ô¼ºµÄÕË»§»ò×é֯ϡ£
ͼ 5. Fork Linux ´úÂë¿â

ͼ 6. Ñ¡Ôñ Fork µÄÄ¿±ê

Pull Request ÌṩÁËÇ¿´óµÄ´úÂëÆÀÉó¡¢´úÂëºÏ²¢µÄ»úÖÆ¡£Í¨¹ý´´½¨ Pull Request
Ïò¿ªÔ´ÏîÄ¿µÄ×÷Õß»òÕß¹ÜÀíÕß·¢ÆðºÏ²¢×Ô¼º´úÂëµÄÇëÇó£¬ÎÒÃÇ¿ÉÒÔÇáËɵØÏò¿ªÔ´ÏîÄ¿¹±Ï×´úÂë¡£´úÂëÆÀÉóºÍ Pull
Request ½«ÔÚËæºóµÄϵÁÐÎÄÕÂÖÐÏêϸ½éÉÜ¡£
ʹÓà Gist ¿ÉÒÔ¹ÜÀíһЩ×Ô¼º³£ÓõĴúÂëÆ¬¶Î¡¢³£ÓõÄÃüÁҲ¿ÉÒÔ·ÖÏí¸øÆäËû¿ª·¢Õß¡£
GitHub ÉÏÒ²¿ÉÒÔ¹ÜÀí¹³×Ó£¨Hook£©£¬¿ÉÓÃÓÚ×Ô¶¯¹¹½¨¹ý³Ì£¬ÀýÈçÒýÈë Jenkins µÄ WebHook£¬Ê¹µÃ
Jenkins ¿ÉÒÔÔÚÿ´Î·¢ÏÖ´úÂëÌá½»ºóÁ¢¼´´¥·¢Ò»´ÎÏîÄ¿¹¹½¨¡£
GitHub Ò²ÌṩÁ˺ܶà¿ÉÑ¡µÄ¼¯³É·þÎñ£¨Integration & Service£©Ê¹Óã¬ÀýÈ缯³É
ZenHub ²å¼þ£¬¿ÉÒÔ½øÐÐÃô½ÝʽÏîÄ¿¹ÜÀí¡£
±¾Õ¼òµ¥ÂÞÁÐÁ˲¿·Ö GitHub µÄÌØµã£¬ÔÚËæºóµÄϵÁÐÎÄÕÂÖУ¬ÎÒ½«»á¶Ô GitHub ²»Í¬µÄÖ÷Ìâ½øÐÐÏêϸµÄ½éÉÜ£¬ÀýÈçȨÏÞ¿ØÖÆ¡¢Pull
Request µÈ¡£
½áÊøÓï
Git ºÍ GitHub ¶¼ÊÇÏÖÔÚÒµ½ç×îÁ÷ÐеĴúÂë¹ÜÀí¹¤¾ß¡£Git ÌṩÁËÇ¿´óµÄ°æ±¾¿ØÖƹ¦ÄÜ£¬¶ø GitHub
×÷Ϊ×î´óµÄ¿ªÔ´´úÂë´úÂëÍÐ¹ÜÆ½Ì¨£¬ÌṩÁËÇ¿´óµÄÍйÜÄÜÁ¦¡¢ÐͬºÏ×÷ÄÜÁ¦¡£GitHub µÄÅ·¢Õ¹Ó뿪ԴÏîÄ¿µÄÅ·¢Õ¹Ï¢Ï¢Ïà¹Ø£¬GitHub
Óµ±§¿ªÔ´µÄ¿ª·Å̬¶ÈʹÆä³ÉΪÁË¿ª·¢ÕßÐÄÄ¿ÖÐ×îΪϲ°®µÄ´úÂëÍÐ¹ÜÆ½Ì¨¡£Ï£ÍûÄúÔÚ¶ÁÍê±¾ÎÄÖ®ºó¶Ô Git ºÍ
GitHub ÄÜÓÐÇåÎúµÄÀí½â£¬Í¬Ê±ÔÚ½ñºóµÄ¹¤×÷ÖÐÏíÊܵ½ Git ºÍ GitHub ´øÀ´µÄÀÖȤ¡£ |