åãã«
Linusã«ããGitã®initial commitã®READMEã®èš³ã§ãã
瀟å ã®SVNããã®ç§»è¡ãä¿ãããã«è³æãæŽåããŠããã®ã§ãããSVNã§ãã£ãŠããããšãç§»ãæ¿ãããã³ãã³ããèŠãããããããå éšæ§é ãç¥ã£ãã»ããæ©ãããšã«æ°ã¥ããŸããã
ããã§ãgitã®å éšæ§é ã«ã€ããŠã®è§£èª¬è³æãè²ã èŠãŠããã®ã§ãããããŒã¿æ§é ã«ã€ããŠã¯åäœè ã®ãã®READMEã«èšãå°œããããŠããæ°ãããŸããã®ã¿ãªãããgitã䜿ããã®ãæ±ãã¹ãç²Ÿç¥æ§ã®ãããªãã®ã瀺ãããŠãããæ·±ãæéãèŠããŸããïŒãã£ãããŒïŒã
README: âGIT - 銬鹿ã³ã³ãã³ããã©ãã«ãŒâ
ã³ãããã¡ãã»ãŒãžïŒgit, å°çããããã€ã³ãã©ã¡ãŒã·ã§ã³ãããŒãžã£
gitã®æå³
"git" ã¯äœãæå³ããããšãåºæ¥ãããåã®æ°å次第ã ã
-
3æåã§ãçºé³å¯èœã§ãå®éã®UNIXã·ã¹ãã ã§å ±éã³ãã³ããšããŠäœ¿ãããŠããªããã®ã§ããã°ãªãã§ãè¯ãã£ãã®ã ãäºå®ã¯'get'ã®çºé³ééãã ãé¢ä¿ããŠããããããŸããã
-
ãã«ãæ ããªããŠæµ ãŸãããåçŽããã®ä»ãåã®ã¹ã©ã³ã°èŸå žããæŸã£ãŠããããã
-
ã°ããŒãã«ã»ã€ã³ãã©ã¡ãŒã·ã§ã³ã»ãã©ãã«ãŒ(global information tracker):
ãåã¯ããæ°åã ãå®éã«ãåã®åœ¹ã«ç«ã€ã倩䜿éã¯æããå ãçªåŠãåã®éšå±ãæºããã -
ããã£ããéæããªãã©ãã¯æºèŒã®ã¯ãœ(goddamn idiotic truckload of sh*t):
å£ããå Žåã
æŠèŠ
ããã¯éŠ¬é¹¿ïŒã ãã©è¶
éãïŒãã£ã¬ã¯ããªã»ã³ã³ãã³ãã»ãããŒãžã£ã ã
沢山ã®äºã¯ããªãããå¹ççã«ãã£ã¬ã¯ããªã®å
容ã远跡ããã
2ã€ã®ãªããžã§ã¯ãæ§é ããã
- ãªããžã§ã¯ãã»ããŒã¿ããŒã¹(.git/objects/)
- ã«ã¬ã³ããã£ã¬ã¯ããªãã£ãã·ã¥(.git/index)
ãªããžã§ã¯ãã»ããŒã¿ããŒã¹ïŒSHA1ã«ãããã¡ã€ã«ã»ãã£ã¬ã¯ããªïŒ
ãªããžã§ã¯ãã»ããŒã¿ããŒã¹ãšã¯æåéãã³ã³ãã³ãã«ãã£ãŠã¢ãã¬ã¹æå®å¯èœãªãªããžã§ã¯ãã®éãŸãã ãå šãŠã®ãªããžã§ã¯ãã¯ãã®ã³ã³ãã³ãã«ãã£ãŠåœåãããããªããžã§ã¯ãèªäœã®SHA1ããã·ã¥å€ã«ãã£ãŠè¿äŒŒãããããªããžã§ã¯ãã¯ä»ã®ãªããžã§ã¯ãã(SHA1ããã·ã¥å€ã«ããïŒåç §ããããšãã§ããã®ã§ããåã¯ãªããžã§ã¯ãã®éå±€æ§é ãæ§ç¯ã§ããã
ãã®ããŒã¿ããŒã¹ã«ã¯è€æ°ã®çš®é¡ã®ãªããžã§ã¯ãããããå šãŠzlibã«ããå§çž®ãããŠãããå é ã¯ãã¡ã€ã«ã¿ã€ãã«ããã¿ã°ãšããŒã¿ã«é¢ãããµã€ãºæ å ±ã§å§ãŸããSHA1ããã·ã¥å€ã¯å§çž®åŸã®ãã®ã§ãããå ããŒã¿ã®ãã®ã§ã¯ãªãã
ç¹ã«ãªããžã§ã¯ãã®äžè²«æ§ã¯ã³ã³ãã³ãããªããžã§ã¯ãã®çš®é¡ãšã¯ç¬ç«ããŠåžžã«ãã¹ãåºæ¥ããå šãŠã®ãªããžã§ã¯ãã¯æ¬¡ã®ããã«ããŠç¢ºãããããã
-
ããã·ã¥å€ããã¡ã€ã«ã®ã³ã³ãã³ãã«ãããããããš
-
ãªããžã§ã¯ããæ¬¡ã®åœ¢åŒã®ãã€ãã¹ããªãŒã ãšããŠåŸ©å·ã«æåããããš
<ã¹ããŒã¹ç¡ãã®asciiæåã«ããã¿ã°> + <space> + <asciiæåã®10é²ãµã€ãºæ å ±> + <\0> + <ãã€ããªãªããžã§ã¯ãããŒã¿>
BLOB
ããããªããžã§ã¯ãã¯ãã€ããªã»ãããããŒã¿ä»¥å€ã®äœããæå³ããããŸãä»ãžã®åç §ãæããªããããŒã¿ã®çœ²åãä»ã®æ€èšŒã¯æããããªããžã§ã¯ããäžè²«ããŠããéã(SHA1ããã·ã¥å€ã«ããã€ã³ããã¯ã¹ãããŠããã®ã§ããŒã¿èªäœã¯æ£ãããšããïŒä»ã«äœã®å±æ§ãæããªããååã®é¢é£ä»ãããããŒããã·ã§ã³ããªããçŽç²ã«ããŒã¿ã®ãããã ïŒå¥ã®èšãæ¹ããããšããã¡ã€ã«ã®äžèº«ã ïŒã
TREE
次ã®éå±€ã®ãªããžã§ã¯ãã®çš®é¡ã¯ãããªãŒãªããžã§ã¯ãã ãããªãŒãªããžã§ã¯ãã¯ããŒããã·ã§ã³ã»ååã»ãããããŒã¿ãããªããªã¹ãã§ãååã«ãããœãŒãæžã¿ã ãå¥ã®èšãæ¹ããããšããªãŒãªããžã§ã¯ãã®äžææ§ã¯ã³ã³ãã³ãã®ã»ããã§æ±ºå®ããããã ãã2ã€ã®å¥ã ã ãåçã®ããªãŒã¯ç¢ºå®ã«åããªããžã§ã¯ããå ±æããã
ããäžåºŠèšãããããªãŒãªããžã§ã¯ãã¯ãã ã®çŽç²ãªããŒã¿æ§é ã ãå±¥æŽãæããã眲åãæãããæ£åœæ§ã®æ€èšŒãæããªããã³ã³ãã³ããããã·ã¥å€ã«ãã£ãŠä¿è·ãããŠããã ãã§ãããããã§ãããããä¿¡é Œããã®ãšåãçå±ã§ããªãŒãªããžã§ã¯ããä¿¡é Œã§ãããããåã¯ã³ã³ãã³ããã©ãããæ¥ãã®ãç¥ãããšã¯ç¡ãã
â»1
ããªãŒãªããžã§ã¯ãããã¡ã€ã«å+ã³ã³ãã³ãã§ãœãŒããããŠããããããåã¯2ã€ã®ããªãŒãå±éãããšãdiffãäœãåºãããšãåºæ¥ããå ±éã®éšåãç¡èŠããã ãã§ãåã®diffã¯èŠããããªãã ãããå¥ã®èšãæ¹ããããšãåã¯2ã€ã®ã©ããªã©ã³ãã ãªããªãŒã®æ¯èŒã§ããããªãŒã®ãµã€ãºã§ã¯ãªããå·®åã®å€§ãããnãšããŠO(n)ã®èšç®éã§å¹æçãã€å¹çããdiffã衚çŸã§ãããšããããã ã
â»2
ãããããŒã¿ã®ååã¯å šãç¬å çã«ãã®å 容ã«äŸåããŠããããïŒååãããŒããã·ã§ã³ãé¢ä¿ãªãïŒããããã®å 容ãå€ãããªããã°ãåã¯çްã ãšãããªããŒã ãããŒããã·ã§ã³ã®å€åãèŠãäºãã§ãããããããªãããããŒã¿ãå€ãã€ã€ãªããŒã ãšããå Žåã«ã¯ãã£ãšè³¢ãdiffãèŠæ±ããããã
ãã§ã³ãžã»ãã
ãã§ã³ãžã»ãããªããžã§ã¯ã1ã¯å±¥æŽåæ ã®æŠå¿µãå°å ¥ãããªããžã§ã¯ãã ãä»ã®ãªããžã§ã¯ããšã¯å¯Ÿè±¡çã«ãããªãŒã®ç©ççãªç¶æ ã衚çŸããã ãã§ãªããã©ããã£ãŠããããŠãªãããã«ãã©ãçããã®ãã衚çŸããã
ãã§ã³ãžã»ããã¯ããªãŒãªããžã§ã¯ãã«ãã£ãŠå®çŸ©ãããçµæãšããŠïŒ0,ãããã¯1以äžïŒã®èŠªãã§ã³ãžã»ãããäœãèµ·ãã£ãã®ãã衚èšããã³ã¡ã³ããå«ããããäžåºŠèšããããã§ã³ãžã»ããããèªäœãèªèšŒããããããŠããããã§ã¯ãªããã³ã³ãã³ãã¯æç¢ºã§å šãŠã®ã¬ãã«ã«ãããŠåŒ·åºãªæå·çœ²åã®ããã«ãå®å šãã§ããããããããªããããªãŒããè¯ãããšãããŒãžæ å ±ãæå³ãæããšãä¿¡ããçç±ãªã©ãªããäŸãã°èŠªãã§ã³ãžã»ããã¯ãã®çµæã«ã€ããŠäœã®é¢é£ãæã€å¿ èŠã¯ãªãã
â»1
æ¬ç©ã®ãœãŒã¹ã»ã³ãŒã管çã·ã¹ãã ïŒSCMïŒãšã¯éãããã§ã³ãžã»ããã«ã¯ãªããŒã æ å ±ããã¡ã€ã«ã¢ãŒãã®å€æŽæ å ±ã¯å«ãŸããªãããããã£ãäºã¯ããªãŒïŒçµæã®ããªãŒãåã³çµæã®ããªãŒã®èŠªïŒãæç€ºçã«é¢ããããšã ããã®éŠ¬é¹¿ãã¡ã€ã«ãããŒãžã£ããããã衚çŸããæå³ã¯ãªãã
â»2ãä¿¡é Œãã«ã€ããŠ
ãä¿¡é Œãã¯gitã®å šãåå€ã®æŠå¿µã ããæ¬¡ã®äºãèŠããŠããããŸã第äžã«ãå šãŠã®ãã®ãSHA1ã«ããããã·ã¥å€ãäžããããŠããããããåã¯ãªããžã§ã¯ãããã®ãŸãŸã§ããå€éšã®æºã«ããåŒããããŠããªãããšãä¿¡é Œåºæ¥ãããªããžã§ã¯ãåã«ãããç¥ãåŸãç¶æ ãäžæçã«èå¥åºæ¥ãã®ã - åã«ãåãä¿¡é Œãããã§ãããç¶æ ã§ã¯ãªãã
ããã«ããã§ã³ãžã»ããã®SHA1眲åã¯ããªãŒã®SHA1眲åãšãæŽã«ãã®èŠªãšé¢é£ä»ããããŠãããåäžã®ååã®ãã§ã³ãžã»ãããå šã³ã³ãã³ããšå ±ã«å šå±¥æŽã®ã»ãããèŠå®ãããäžåºŠãåããã§ã³ãžã»ããã®ååãåŸããªããåŸã»ã©å±¥æŽã®ã¹ãããã誀éåãäºã¯ã§ããªãã2
ããã§å¹Ÿã€ãã®ã·ã¹ãã ã«ãããçŸå®çãªä¿¡é Œã玹ä»ãããšããã°ããåãããªããã°ãªããªãã®ã¯ãããã¬ãã«ã®ãã§ã³ãžã»ããåãå«ãç¹å¥ãªèšè¿°äžã€ãããžã¿ã«çã«çœ²åããããšã ãã ããåã®ããžã¿ã«çœ²åã¯ä»ã®è ã«ãã®ãã§ã³ãžã»ãããä¿¡é Œã§ããããšã瀺ãããã§ã³ãžã»ããã®å±¥æŽã®äžå€æ§ã¯ä»ã®è ã«å šå±¥æŽãä¿¡é Œã§ããããšã瀺ãã§ãããã
èšãæãããªãã°ããåã¯GPG/PGPçã®ããžã¿ã«çœ²åãããemailã䜿ãïŒSHA1ããã·ã¥å€ã®ïŒãããã®ãã§ã³ãžã»ãããéãã ãã§å šãŠã®ã¢ãŒã«ã€ãã®æ€èšŒãè¡ãããšãåºæ¥ãã
ç¹ã«ããåãä»ã®è ãä¿¡é Œããããã¥ã¡ã³ãã®è€æ°ã®ãã©ã¹ãã»ãã€ã³ããã¿ã°ããæãåå²ãããã¢ãŒã«ã€ããæã€ããšãåºæ¥ãããã£ãšãããããä¿¡é ŒèšŒæãã¯gitãã®ãã®ã䜿ã£ãŠããããšããããããããããã ããå¥ã«ç¹æ®µgitããåã«äœããããšããããã§ããªãã
èšãæ¹ãå€ãããšãgitèªäœã¯ã³ã³ãã³ãã®æŽåæ§ã®ã¿æ±ããä¿¡é Œã¯å€éšããä»äžããããšããããšã§ããã
ã«ã¬ã³ãã»ãã£ã¬ã¯ããªã»ãã£ãã·ã¥
ã«ã¬ã³ããã£ã¬ã¯ããªãã£ãã·ã¥ãšã¯åçŽãªãã€ããªãã¡ã€ã«ã§ãããä»»æã®æç¹ã§ã®ä»®æ³çãªãã£ã¬ã¯ããªã®ã³ã³ãã³ããå¹çãã衚çŸãããã®ã§ãããååãæ¥ä»ãããŒããã·ã§ã³ãã³ã³ãã³ãïŒãŸãã¯ãããïŒãäžç·ã«ã»ãããããã®ã®åçŽãªé åã§ãããåžžã«ååé ã«äžŠã¹ãããŠãããããã£ãã·ã¥ãªã®ã§é·ãæéã«æž¡ã£ãŠä¿æãããããšãæå³ããŠã¯ãããããã€ã§ãéšåçã«æŽæ°ã§ããã
ç¹ã«ãã«ã¬ã³ããã£ã¬ã¯ããªãã£ãã·ã¥ã¯ç¢ºå®ã«çŸåšã®ãã£ã¬ã¯ããªã®å 容ãšäžèŽããªããã°ãªããªããšèšãããã§ã¯ãªããã2ã€ã®éèŠãªç¹åŸŽãããã
-
ãã£ãã·ã¥ããŠããå šãŠã®ç¶æ ãåçæå¯èœã§ãã
ïŒãã£ã¬ã¯ããªæ§é ã ãã§ãªããããããªããžã§ã¯ããéããŠå šããŒã¿ãåçæå¯èœã§ãããšããããšïŒ
ç¹æ®ãªå ŽåãšããŠãæç¢ºã§éè€ããªãã«ã¬ã³ããã£ã¬ã¯ããªãã£ãã·ã¥ããããªãŒãªããžã§ã¯ããžã®åäžã®ãããã³ã°ãååšããä»ã®ããŒã¿ãèŠãå¿ èŠãç¡ãã«ã¬ã³ããã£ãã·ã¥ãã£ã¬ã¯ããªããå¹çããçæã§ããå Žåããããããã§ãã£ã¬ã¯ããªãã£ãã·ã¥ã¯ãã€ã©ã®æç¹ã§ããã ã²ãšã€ã®ãŠããŒã¯ã«å®çŸ©ãããããªãŒãªããžã§ã¯ãã§ããïŒããããªããããªãŒãªããžã§ã¯ããšãã£ã¬ã¯ããªå ã§äœãèµ·ãã£ãããç §åãããã远å çããŒã¿ãæã€) -
ãã£ãã·ã¥ãããç¶æ ïŒè£ä»ããããã®ãåŸ ã£ãŠããããªãŒãªããžã§ã¯ãïŒãšçŸåšã®ç¶æ ãšã®äžæŽåãæ€åºããããã®å¹çã®è¯ãã¡ãœãããæã€
以äžããã£ã¬ã¯ããªãã£ãã·ã¥ãè¡ããã£ã2ã€ã®ããšã§ããããã£ãã·ã¥ã§ãããæ¢åã®ããªãŒãªããžã§ã¯ãããã®å®å šãªåçæããéçºããªãŒã®æŽæ°ãæ¢åããªãŒãšã®æ¯èŒãè¡ãããã®ãã®ã§ããããããåããã£ã¬ã¯ããªãã£ãã·ã¥ãå šãå¹ãé£ã°ãããšããŠãããã£ãã·ã¥ã§è¡šçŸãããŠããããªãŒã®ååãä¿æããŠããéããäœã®ããŒã¿ã倱ããªãã
ïŒããããªãããã£ã¬ã¯ããªãã£ãã·ã¥ã«ã¯å®ããŒã¿ãå ¥ãããšããããç¹ã«ããŸã è£ä»ããããŠããªãäžéç¶æ ã®ããªãŒã®è¡šçŸãæã€ããšããããããã§ãã£ãã·ã¥æ¬æ¥ã®æå³ãçšæ³ãšã¯éãå ŽåããããèŠæ¹ãå€ãããªãã«ã¬ã³ããã£ã¬ã¯ããªãã£ãã·ã¥ãããªãŒã³ããããžã®äœæ¥äžã®ç¶æ ãšèããããšãåºæ¥ã3ïŒã
è£éº
æ±ãããŠããªãå 容
åæã¯ããŒã¿æ§é ã®ã¿ã®èª¬æã§ãã
ãã以å€ïŒéä¿¡ç³»ããã¹ãã£ã³ã°ãªã©ã¯ïŒæ±ãããŠããŸããã
ãŸãåºæ¬ããŒã¿æ§é ã®å¿çšã§ãããã©ã³ããããŒãžããããŸããã
ãããã£ãããšã¯åæã«ãããŠã¯æåã»å¿çšã¹ã¯ãªããã§å¯Ÿå¿ããŠããããã§ãã
æäœ
åæã®æäœã®åé ã¯ã¹ã©ã³ã°ãšçœµåã®çŸ åã§ããèªäœããã°ã©ã ã銬鹿ãšåäžãã衚çŸããããããããŸãããåé¡é åã«å¯ŸããŠã·ã³ãã«ãªããŒã¿æ§é ã§è§£æ±ºãããã ããšããçæã®ãããªãã®ãæããããŸããåœææµè¡ã£ãŠããã倿©èœã§ä¿¡é Œå¯èœãªãSCMãæåŸ ããåãã«å¯ŸããŠçªãæŸãããããªè¡šçŸãå€ã ãããŸãããªãCVSãSVNãªã©åŸæ¥åã®å·®åSCMã«å¯ŸããLinusã®æ 床ã¯è¶ æ»æçãªããšã§æåã§ãã
ãããªããã§èš³æãããä¹±æŽãªãã€ã¹ãã«ããŸããããäžå¿«ã«æããããããããªããã
çè§£ã®ããã«
å®éã«é©åœãªãªããžããªãææ°ã®commitãã
git cat-file -p <hash>
ããŠãªããžã§ã¯ãããŒã¿ããŒã¹ã蟿ã£ããã
git ls-files --stage
ããŠindexãèŠãŠã¿ããšãä»ã§ãããŒã¿ã«é¢ããŠã¯äžèšã®äºã¯åºæ¬çã«ããŠããããšãããããŸã4ã
Pro git æ¥æ¬èªçã®Gitã®å
åŽã®ç« ãå®éã«æãåãããŠã¿ããšçè§£ãäžå±€æ·±ãŸããšæããŸãã
-
èŠããã«ã³ãããæ å ± â©
-
ãã®ããšãããgitã«ããå±¥æŽç®¡çã¯äžçš®ã®ãããã¯ãã§ãŒã³ãšã¿ãªãããšãã§ããã â©
-
git addãrmããŠãcommitããŠããªãç¶æ ã®æã¯ãã®ããã«ãªãã â©
-
ä»ã§ã¯äžèšã®åºæ¬ããŒã¿ã«å ããpackãã¡ã€ã«ã«ããå·®åãæ±ãã容éãpushåã®è»¢ééãç¯çŽãããããŠããã詳ããã¯Pro Git - Gitã®å åŽãããã¯ãã¡ã€ã«ãåç §ã®ããšã â©