±à¼ÍƼö: |
±¾ÎÄÀ´×Ôsegmentfault.com£¬ÔÚÄãͨ¹ýgithub»òÕ߯äËûÔ¶³ÌÍйܷþÎñÆ÷À´ºÍÆäËûÈ˽øÐÐÐͬ¿ª·¢´úÂëµÄʱºò£¬È·±£»»Ðзû±»ÕýÈ·´¦ÀíÊÇÒ»ÏîºÜÖØÒªµÄÊ¡£ |
|
Ê×ÏÈ£¬ÄãÐèÒªÖªµÀ²»Í¬µÄ²Ù×÷ϵͳ¶Ô»»ÐзûµÄ¶¨Òå»áÓÐËù²»Í¬£¬Unix»òÀàUnix²Ù×÷ϵͳµÄ»»Ðзû½Ð×öLF£¬¶øwindowsϵͳµÄ½Ð×öCRLF£¬¶þÕß¾ßÓкܴóµÄÇø±ð£º
UnixϵͳÀÿÐнáβֻÓС°<»»ÐÐ>¡±£¬¼´"n"£»WindowsϵͳÀïÃæ£¬Ã¿ÐнáβÊÇ¡°<»»ÐÐ><»Ø³µ>¡±
Note:Òý×Իسµ(CR)Óë»»ÐÐ(LF)£¬ 'r'ºÍ'n'µÄÇø±ð.
Õâ¾ÍÊÇÔì³ÉÎÊÌâµÄ¸ùÔ´¡ª¡ª¼´Èç¹ûÄãʹÓõÄÊÇwindowsϵͳ£¬¶øÄãµÄС»ï°éÓõÄÊÇMacµÄ»°£¬µ±ÄãÃÇʹÓÃgitÐͬ¿ª·¢Èí¼þʱ£¬¾Í»á³öÏÖ»»Ðзû²»Í³Ò»µÄÎÊÌâ¡£
gitÆäʵ¿ÉÒÔ×Ô¼º´¦Àí»»Ðзû²»Í³Ò»µÄÎÊÌ⣬µ«ÊÇ¿ÉÄÜ»á²úÉúÒâÏë²»µ½µÄ½á¹û¡£Òò´Ë£¬ÓбØÒª½øÐÐÏà¹ØµÄÅäÖã¬ÎÒÃÇͨ³£ÓÐÁ½ÖÖ·½°¸£º
È«¾ÖÅäÖû»Ðзû
Õë¶Ôij¸ö²Ö¿âµÄ¾Ö²¿ÅäÖÃ
»»ÐзûµÄÈ«¾ÖÅäÖÃ
Ò»°ãÈç¹ûÄã²»ÏëÂé·³µÄ»°£¬¿ÉÒÔ²ÉÓñȽϼòµ¥µÄ·½·¨£¬ÈçÏÂËùʾ:
$ git config --global
core.autocrlf true |
Æäʵ£¬ÔÚÄã°²×°windows°æ±¾µÄgit»òÕßtorgoiseGitʱ£¬Äã¿ÉÄÜÒѾ½øÐйýÕâÑùµÄÅäÖã¬Ò²ÐíÄ㵱ʱ²¢Î´ÖªµÀÄǸöÑ¡ÏîÊÇʲôÒâ˼¡£ÏÂÃæÕâÕÅͼÊDz»ÊÇÓÐЩÑÛÊìÄØ£¿

Note:±¾Í¼Æ¬À´×԰ٶȾÑé:http://jingyan.baidu.com/arti...¡£
²»¹ý£¬Ò²ÐíºÜ¶àÈ˰²×°gitµÄʱºò£¬ÊÇÒ»Ö±next...next°É£¡ÆäʵÉÏÃæÐ´µÃºÜÇå³þ£º
Checkout Windows-style, commit Unix-style line endings
µ±¼ì³öÎı¾Îļþʱ£¬Git»á½«LFת»»ÎªCRLF¡£µ±Ìá½»Îı¾Îļþʱ£¬CRLF½«»á±»×ª»»ÎªLF¡£¶ÔÓÚ¿çÆ½Ì¨µÄÏîÄ¿£¬ÕâÊǶÔWindowsϵͳµÄÍÆ¼öÉèÖá£("core.autocrlf"
is set to "true")
Checkout as-is, commit Unix-style line endings
µ±¼ì³öÎı¾Îļþʱ£¬Git²»»á×öÈκÎת»»¡£µ±Ìá½»Îı¾Îļþʱ£¬CRLF½«»á±»×ª»»ÎªLF¡£¶ÔÓÚ¿çÆ½Ì¨µÄÏîÄ¿£¬ÕâÊǶÔUnixϵͳµÄÍÆ¼öÉèÖá£("core.autocrlf"
is set to "input")
Checkout as-is, commit as-is
²»ÂÛÊǼì³ö»¹ÊÇÌá½»Îı¾Îļþʱ£¬Git¶¼²»»á×öÈκÎת»»¡£¶ÔÓÚ¿çÆ½Ì¨µÄÏîÄ¿£¬²»ÍƼö²ÉÓøÃÑ¡Ïî¡£
ÏÔÈ»£¬µÚÒ»¸öÑ¡Ïî¾ÍÊÇÎÒÃÇËù½éÉܵĵÚÒ»ÖÖ·½·¨¡£
˳±ãͲÛһϣ¬ÎÒÔÚÍøÉÏ¿´µ½ºÜ¶à½éÉÜÈçºÎ°²×°GitµÄ²©¿Í£¬ºÜÉÙÓÐÏêϸ˵Ã÷ÿһ¸ö°²×°²½ÖèµÄ£¬ÓÐЩÉõÖÁÖ±½Ó˵
Ò»Ö±nextÏÂÈ¥¾Í°²×°Íê³ÉÁË¡£
Ò»·½ÃæÔÒò¾ÍÊÇËûÃÇÒ²²»ÖªµÀ£¬ÆäʵÕâÑù¿ÉÄÜ»á¶ÔÐÂÊÖ²úÉúÎóµ¼£¬¶øÇÒδÃâÓÐЩ²»¸ºÔðÈΡ£
µ¥Ò»²Ö¿âµÄ»»Ðзû¾Ö²¿ÅäÖÃ
µ±È»£¬ÓиüºÃµÄ·½·¨½â¾ö»»Ðзû²»Í³Ò»µÄÎÊÌ⡪¡ªÊ¹ÓÃ.gitattributesÎļþͳһ»»Ðзû¡£ÕâÖÖ·½·¨ÊÇÕë¶Ôij¸ö²Ö¿â½øÐл»ÐзûµÄͳһÅäÖ㬼´Ê±ÄãÒѾ½øÐÐÁËÈ«¾ÖÅäÖá£
ÁíÍ⣬Õâ¸öÎļþÓеã¶ùÀàËÆÓÚ.gitignore£¬²»½öÃû×ÖºÜÀàËÆ£¬Ê¹Ó÷½Ê½£¬±àдÓï·¨Ò²ºÜÏñ¡£Õâ¸öÎļþ±ØÐëλÓÚ²Ö¿âµÄ¸ùĿ¼£¬¿ÉÒÔÏñÆäËûÎļþÒ»Ñù½øÐÐÐ޸ġ¢Ìá½»¡£ÏÂÃæ½éÉÜÈçºÎ±àдÕâ¸öÎļþ£º
ÎļþÄÚÈÝ¿´ÆðÀ´ÏñÒ»Õűí¸ñ£¬×ܹ²·ÖΪÁ½ÁУº×ó±ßÒ»ÁÐÊÇgitҪƥÅäµÄÎļþÃû£»ÓÒ±ßÊÇgitÐèÒª²ÉÓõĻ»Ðзû¸ñʽ¡£ÏÂÃæÎÒÃÇÀ´¿´Ò»¸öÀõ×Ó£º
# Set the default
behavior, in case people don't have core.autocrlf
set.
* text=auto
# Explicitly declare text files you want to
always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text
# Declare files that will always have CRLF
line endings on checkout.
*.sln text eol=crlf
# Denote all files that are truly binary and
should not be modified.
*.png binary
*.jpg binary |
Èç¹ûÄãÊìϤ.gitignoreµÄ»°£¬Äã»á¾õµÃÉÏÃæÕâ¸öÎļþµÄ×ó±ßÒ»ÁкÜÊìϤ£¬ÕâÀïÎÒÃǾͲ»ÔÙ׸ÊöÁË£¬²»ÊìϤµÄ»°£¬Çë×ÔÐвéÔÄÏà¹Ø×ÊÁÏ¡£Î¨Ò»µÄ²»Í¬¾ÍÊÇ.gitattributesÎļþ¶àÁËÓÒ±ßÒ»ÁУ¬Èçtext,
text eol=crlf, binary£¬¸Õ¸ÕÎÒÃÇҲ˵¹ýÕâÒ»ÁÐÊÇÓÃÀ´ÉèÖÃ×ó±ß¶ÔÓ¦ÎļþʹÓõĻ»Ðзû¸ñʽµÄ£¬×óÓÒÁ½ÁÐÓÿոñ¸ô¿ª¡£ÏÂÃæÎÒÃÇÀ´Ïêϸ½éÉÜÏÂÓÒ±ßÒ»ÁеÄÓï·¨£º
text=auto
ÈÃgit×ÔÐд¦Àí×ó±ßÆ¥ÅäµÄÎļþʹÓúÎÖÖ»»Ðзû¸ñʽ£¬ÕâÊÇĬÈÏÑ¡Ïî¡£
text eol=crlf
¶Ô×ó±ßÆ¥ÅäµÄÎļþͳһʹÓÃCRLF»»Ðзû¸ñʽ£¬Èç¹ûÓÐÎļþÖгöÏÖLF½«»áת»»³ÉCRLF¡£
text eol=lf
¶Ô×ó±ßÆ¥ÅäµÄÎļþͳһʹÓÃLF»»Ðзû¸ñʽ£¬Èç¹ûÓÐÎļþÖгöÏÖCRLF½«»áת»»³ÉLF¡£
binary
¸æËßgitÕâ²»ÊÇÎı¾Îļþ£¬²»Ó¦¸Ã¶ÔÆäÖеĻ»Ðзû½øÐиı䡣ÁíÍ⣬binaryºÍ·ûºÅ-text -diffÊǵȼ۵ġ£
ÉÏÃæÕâЩÓï·¨Ó¦¸ÃÒѾ×ã¹»ÁË£¬Èç¹ûÓÐÐËȤµÄ£¬¿ÉÒÔ×ÔÐвéÔÄÏà¹Ø×ÊÁÏ£¬±ÈÈç¹Ù·½µÄ×ÊÁÏ£ºhttps://git-scm.com/book/en/v...¡£
Èç¹û´´½¨²Ö¿â֮ǰûÓнøÐл»ÐзûÅäÖÃÔõô°ì
Ò²ÐíÄãÔÚ¿´ÍêÎҵIJ©¿ÍÖ®ºó£¬²ÅÒâʶµ½×Ô¼º²¢Î´½øÐÐÏà¹ØµÄÉèÖÃÒÖ»òÊÇÄãÏëÐ޸Ļ»ÐзûÅäÖã¬ÓÚÊÇÄãÐËÖ²ª²ªµØ°´ÕÕÎҵIJ©¿Í½øÐÐÁËÅäÖ㬽á¹ûÄã·¢ÏÖ³öÁËÒ»¶ÑĪÃûÆäÃîµÄ¾¯¸æ»òÕß´íÎó¡£
¹ÖÎÒà¶£¿

²»Òª×ż±Í²ۣ¬±øÀ´½«µ²£¬Ë®À´ÍÁÑÚ£¬Ã»Óнâ¾ö²»Á˵ÄÎÊÌ⣡
Ê×Ïȱ£´æGitÖÐĿǰµÄËùÓÐÎļþ£¬ÕâÑù¿ÉÒÔÈ·±£ÄãµÄ¹¤×÷²»»á¶ªÊ§¡£
# ÔÚ²Ö¿âµÄ¸ùĿ¼ÏÂÔËÐÐÃüÁî
$ git add . -u
$ git commit -m "Saving files before refreshing
line endings" |
È»ºóɾ³ýÔÝ´æÇøÖеÄËùÓÐÎļþ£¬
ÖØÐ´ÔÝ´æÇøÒÔÖØÐÂÓ¦ÓÃÐµĻ»Ðзû
ÕÒ»ØËùÓÐÐ޸ĹýµÄÎļþ²¢¼ÓÈëÔÝ´æÇø£¬Í¬Ê±£¬ÄãÒ²¿ÉÒԲ鿴ЩÎļþûÓб»Ð޸ġ£
$ git add .
# ³öÏÖ"warning: CRLF will be replaced by LF
in file."µÄ¾¯¸æÊǺÜÕý³£µÄÏÖÏó |
Ìá½»Äã¶Ô²Ö¿âµÄÐÞ¸Ä
$ git commit
-m "Normalize all the line endings" |
|