.. include:: ../disclaimer-zh_CN.rst :Original: :ref:`Documentation/process/7.AdvancedTopics.rst <development_advancedtopics>` :Translator: Alex Shi <alex.shi@linux.alibaba.com> .. _cn_development_advancedtopics: é«çº§ä¸»é¢ ======== ç°å¨ï¼å¸ææ¨è½å¤ææ¡å¼åæµç¨çå·¥ä½æ¹å¼ãç¶èï¼è¿ææ´å¤çä¸è¥¿è¦å¦ï¼æ¬èå°ä»ç» ä¸äºä¸»é¢ï¼è¿äºä¸»é¢å¯¹å¸ææ为Linuxå æ ¸å¼åè¿ç¨å¸¸è§é¨åçå¼å人åæ帮å©ã 使ç¨Git管çè¡¥ä¸ --------------- å æ ¸ä½¿ç¨åå¸å¼çæ¬æ§å¶å§äº2002å¹´åï¼å½æ¶Linusé¦æ¬¡å¼å§ä½¿ç¨ä¸æçBitkeeperåºç¨ ç¨åºãè½ç¶bitkeeperåå¨äºè®®ï¼ä½å®æä½ç°ç软件çæ¬ç®¡çæ¹æ³å´è¯å®ä¸æ¯ãåå¸å¼ çæ¬æ§å¶å¯ä»¥ç«å³å éå æ ¸å¼å项ç®ãå¨å½åçæ¶ä»£ï¼æå ç§å è´¹çæ¯ç¹ä¿æå¨æ¿ä»£åã æ 论好åï¼å æ ¸é¡¹ç®é½å°Gitä½ä¸ºå ¶éæ©çå·¥å ·ã 使ç¨Git管çè¡¥ä¸å¯ä»¥ä½¿å¼å人åççæ´»æ´å è½»æ¾ï¼å°¤å ¶æ¯éçè¡¥ä¸æ°éçå¢å ãGit ä¹æå ¶ç²ç³çè¾¹ç¼åä¸å®çå±é©ï¼å®æ¯ä¸ä¸ªå¹´è½»å强大çå·¥å ·ï¼ä»ç¶å¨å ¶å¼å人åå®å ä¸ãæ¬ææ¡£ä¸ä¼è¯å¾æä¼è¯»è å¦ä½ä½¿ç¨gitï¼è¿ä¼æ¯ä¸ªå·¨é¿çææ¡£ãç¸åï¼è¿éçéç¹ å°æ¯Gitå¦ä½ç¹å«éåå æ ¸å¼åè¿ç¨ãæ³è¦å å¿«Gitçå¼å人åå¯ä»¥å¨ä»¥ä¸ç½ç«ä¸æ¾å° æ´å¤ä¿¡æ¯ï¼ http://git-scm.com/ http://www.kernel.org/pub/software/scm/git/docs/user-manual.html å¨å°è¯ä½¿ç¨å®ä½¿è¡¥ä¸å¯ä¾å ¶ä»äººä½¿ç¨ä¹åï¼ç¬¬ä¸è¦å¡æ¯é 读ä¸è¿°ç«ç¹ï¼å¯¹Gitçå·¥ä½ æ¹å¼æä¸ä¸ªæå®çäºè§£ã使ç¨Gitçå¼å人ååºè¯¥è½å¤è·å¾ä¸»çº¿åå¨åºçå¯æ¬ï¼æ¢ç´¢ 修订åå²ï¼æ交对æ çæ´æ¹ï¼ä½¿ç¨åæ¯çãäºè§£Gitç¨äºéååå²çå·¥å ·ï¼å¦Rebaseï¼ ä¹å¾æç¨ãGitæèªå·±çæ¯è¯åæ¦å¿µï¼Gitçæ°ç¨æ·åºè¯¥äºè§£refsãè¿ç¨åæ¯ãç´¢å¼ã å¿«è¿å并ãæ¨æãå离头çãä¸å¼å§å¯è½æç¹å人ï¼ä½è¿äºæ¦å¿µä¸é¾éè¿ä¸ç¹å¦ä¹ æ¥ ç解ã 使ç¨gitçæéè¿çµåé®ä»¶æ交çè¡¥ä¸æ¯æé«é度çä¸ä¸ªå¾å¥½çç»ä¹ ã å½æ¨åå¤å¥½å¼å§å®è£ Gitæ ä¾å ¶ä»äººæ¥çæ¶ï¼æ¨å½ç¶éè¦ä¸ä¸ªå¯ä»¥ä»ä¸æåçæå¡å¨ã å¦ææ¨æä¸ä¸ªå¯ä»¥è®¿é®Internetçç³»ç»ï¼é£ä¹ä½¿ç¨gitå®æ¤è¿ç¨è®¾ç½®è¿æ ·çæå¡å¨ç¸ 对ç®åãå¦åï¼å è´¹çå ¬å ±æ管ç½ç«ï¼ä¾å¦githubï¼å¼å§åºç°å¨ç½ç»ä¸ãæççå¼å 人åå¯ä»¥å¨kernel.orgä¸è·å¾ä¸ä¸ªå¸æ·ï¼ä½è¿äºå¸æ·å¹¶ä¸å®¹ææ¾å°ï¼æå ³æ´å¤ä¿¡æ¯ï¼ 请åé http://kernel.org/faq/ æ£å¸¸çGitå·¥ä½æµç¨æ¶åå°è®¸å¤åæ¯ç使ç¨ãæ¯ä¸æ¡å¼å线é½å¯ä»¥å为åç¬çâä¸»é¢ åæ¯âï¼å¹¶ç¬ç«ç»´æ¤ãGitçåæ¯æºæå¾ä¾¿å®ï¼æ²¡æçç±ä¸å 费使ç¨å®ä»¬ãèä¸ï¼å¨ ä»»ä½æ åµä¸ï¼æ¨é½ä¸åºè¯¥å¨ä»»ä½æ¨æç®è®©å ¶ä»äººä»ä¸åççåæ¯ä¸è¿è¡å¼åãåºè¯¥ å°å¿å°åå»ºå ¬å¼å¯ç¨çåæ¯ï¼å½å®ä»¬å¤äºå®æ´çå½¢å¼å¹¶åå¤å¥½è¿è¡æ¶(èä¸æ¯ä¹åï¼ï¼ å并å¼ååæ¯çè¡¥ä¸ã Gitæä¾äºä¸äºå¼ºå¤§çå·¥å ·ï¼å¯ä»¥è®©æ¨éåå¼ååå²ãä¸ä¸ªä¸æ¹ä¾¿çè¡¥ä¸ï¼æ¯å¦è¯´ï¼ ä¸ä¸ªæç ´äºåæ³çè¡¥ä¸ï¼æè æå ¶ä»ä¸äºææ¾ç缺é·ï¼å¯ä»¥å¨éå½çä½ç½®ä¿®å¤ï¼æè å®å ¨ä»åå²ä¸æ¶å¤±ãä¸ä¸ªè¡¥ä¸ç³»åå¯ä»¥è¢«éåï¼å°±å¥½åå®æ¯å¨ä»å¤©ç主线ä¹ä¸åç ä¸æ ·ï¼å³ä½¿ä½ å·²ç»è±äºå 个æçæ¶é´å¨åå®ãå¯ä»¥éæå°å°æ´æ¹ä»ä¸ä¸ªåæ¯è½¬ç§»å°å¦ ä¸ä¸ªåæ¯ãççãææºå°ä½¿ç¨gitä¿®æ¹åå²çè½åå¯ä»¥å¸®å©å建é®é¢æ´å°çå¹²åè¡¥ä¸éã ç¶èï¼è¿åº¦ä½¿ç¨è¿ç§è½åå¯è½ä¼å¯¼è´å ¶ä»é®é¢ï¼èä¸ä» ä» æ¯å¯¹å建å®ç¾é¡¹ç®åå²ç ç®åç´è¿·ãéååå²å°éå该åå²ä¸å å«çæ´æ¹ï¼å°ç»è¿æµè¯ï¼å¸æï¼çå æ ¸æ å 为æªç»æµè¯çå æ ¸æ ãä½æ¯ï¼é¤æ¤ä¹å¤ï¼å¦æå¼å人å没æ对项ç®åå²çå ±äº«è§å¾ï¼ ä»ä»¬å°±æ æ³è½»æ¾å°åä½ï¼å¦ææ¨éåäºå ¶ä»å¼å人åæå ¥ä»ä»¬åå¨åºçåå²ï¼æ¨å° 使è¿äºå¼å人åççæ´»æ´å å°é¾ãå æ¤ï¼è¿éæä¸ä¸ªç®åçç»éªæ³åï¼è¢«å¯¼åºå°å ¶ä» 人çåå²å¨æ¤åé常被认为æ¯ä¸å¯åçã å æ¤ï¼ä¸æ¦å°ä¸ç»æ´æ¹æ¨éå°å ¬å¼å¯ç¨çæå¡å¨ä¸ï¼å°±ä¸åºè¯¥éåè¿äºæ´æ¹ãå¦ææ¨ å°è¯å¼ºå¶è¿è¡ä¸ä¼å¯¼è´å¿«è¿å并ï¼å³ä¸å ±äº«åä¸åå²è®°å½çæ´æ¹ï¼çæ´æ¹ï¼Gitå°å° è¯å¼ºå¶æ§è¡æ¤è§åãå¯ä»¥éåæ¤æ£æ¥ï¼ææ¶å¯è½éè¦éå导åºçæ ãå¨æ ä¹é´ç§»å¨å æ´é以é¿å Linux-nextä¸çå²çªå°±æ¯ä¸ä¸ªä¾åãä½è¿ç§è¡ä¸ºåºè¯¥æ¯ç½è§çãè¿å°±æ¯ä¸º ä»ä¹å¼ååºè¯¥å¨ç§æåæ¯ä¸è¿è¡ï¼å¿ è¦æ¶å¯ä»¥éåï¼å¹¶ä¸åªæå¨å ¬å ±åæ¯å¤äºåçç é«çº§ç¶ææ¶æ转移å°å ¬å ±åæ¯ä¸çåå ä¹ä¸ã å½ä¸»çº¿ï¼æå ¶ä»ä¸ç»åæ´æåºäºçæ ï¼åè¿æ¶ï¼å¾å®¹æä¸è¯¥æ å并以ä¿æé¢å å°ä½ã 对äºä¸ä¸ªç§æçåæ¯ï¼rebasing å¯è½æ¯ä¸ä¸ªå¾å®¹æè·ä¸å¦ä¸æ£µæ çæ¹æ³ï¼ä½æ¯ä¸æ¦ ä¸æ£µæ 被导åºå°å ¨ä¸çï¼rebasingå°±ä¸æ¯ä¸ä¸ªé项ãä¸æ¦åçè¿ç§æ åµï¼å°±å¿ é¡»è¿è¡ å®å ¨å并ï¼mergeï¼ãå并ææ¶æ¯å¾ææä¹çï¼ä½æ¯è¿äºé¢ç¹çå并ä¼ä¸å¿ è¦å°æ°ä¹± åå²ãå¨è¿ç§æ åµä¸ï¼å»ºè®®çææ¯æ¯ä¸ç»å¸¸å并ï¼é常åªå¨ç¹å®çåå¸ç¹ï¼å¦ä¸»çº¿-rc åå¸ï¼å并ãå¦ææ¨å¯¹ç¹å®çæ´æ¹æå°ç´§å¼ ï¼åå¯ä»¥å§ç»å¨ç§æåæ¯ä¸æ§è¡æµè¯å并ã å¨è¿ç§æ åµä¸ï¼git rerere å·¥å ·å¾æç¨ï¼å®è®°ä½å并å²çªæ¯å¦ä½è§£å³çï¼è¿æ ·æ¨å°± ä¸å¿ éå¤ç¸åçå·¥ä½ã å ³äºGitè¿æ ·çå·¥å ·çä¸ä¸ªæ大çåå¤æ±æ¨æ¯ï¼è¡¥ä¸ä»ä¸ä¸ªåå¨åºå°å¦ä¸ä¸ªåå¨åºç 大é移å¨ä½¿å¾å¾å®¹æé·å ¥é误建议çåæ´ä¸ï¼è¿äºåæ´é¿å¼å®¡æ¥é·è¾¾è¿å ¥ä¸»çº¿ãå½å æ ¸å¼å人åçå°è¿ç§æ åµåçæ¶ï¼ä»ä»¬å¾å¾ä¼æå°ä¸é«å ´ï¼å¨Gitæ ä¸æ¾ç½®æªæ¥çæ 主é¢å¤çè¡¥ä¸å¯è½ä¼å½±åæ¨å°æ¥è·åæ çè½åãå¼ç¨Linus: :: ä½ å¯ä»¥ç»æåè¡¥ä¸ï¼ä½è¦æä»ä½ åªéåä¸ä¸ªGitè¡¥ä¸ï¼æéè¦ç¥éä½ ç¥é ä½ å¨åä»ä¹ï¼æéè¦è½å¤ç¸ä¿¡äºæ èä¸å»æ£æ¥æ¯ä¸ªä¸ªäººæ¹åã ï¼http://lwn.net/articles/224135/ï¼ã 为äºé¿å è¿ç§æ åµï¼è¯·ç¡®ä¿ç»å®åæ¯ä¸çææè¡¥ä¸é½ä¸ç¸å ³ä¸»é¢ç´§å¯ç¸å ³ï¼â驱å¨ç¨åº ä¿®å¤âåæ¯ä¸åºæ´æ¹æ ¸å¿å å管ç代ç ãèä¸ï¼æéè¦çæ¯ï¼ä¸è¦ä½¿ç¨Gitæ æ¥ç»è¿ 审æ¥è¿ç¨ãä¸æ¶çå°æ çæè¦åå¸å°ç¸å ³çå表ä¸ï¼å½æ¶é´åéæ¶ï¼è¯·æ± Linux-next ä¸å å«è¯¥æ ã å¦æå ¶ä»äººå¼å§åéè¡¥ä¸ä»¥å å«å°æ¨çæ ä¸ï¼ä¸è¦å¿è®°æ¥çå®ä»¬ãè¿è¦ç¡®ä¿æ¨ç»´æ¤æ£ç¡® çä½è ä¿¡æ¯ï¼ ``git am`` å·¥å ·å¨è¿æ¹é¢åå¾æ好ï¼ä½æ¯å¦æå®éè¿ç¬¬ä¸æ¹è½¬åç»æ¨ï¼ æ¨å¯è½éè¦å¨è¡¥ä¸ä¸æ·»å âFromï¼âè¡ã 请æ±pullæä½æ¶ï¼è¯·å¡å¿ æä¾ææç¸å ³ä¿¡æ¯ï¼æ çä½ç½®ãè¦æçåæ¯ä»¥åææä½å°å¯¼è´ çæ´æ¹ãå¨è¿æ¹é¢ï¼git request pull å½ä»¤é常æç¨ï¼å®å°æç §å ¶ä»å¼å人åçé¢æ æ ¼å¼å请æ±ï¼å¹¶æ£æ¥ä»¥ç¡®ä¿æ¨è®°ä½äºå°è¿äºæ´æ¹æ¨éå°å ¬å ±æå¡å¨ã 审æ¥è¡¥ä¸ -------- ä¸äºè¯»è å½ç¶ä¼å对å°æ¬èä¸âé«çº§ä¸»é¢âæ¾å¨ä¸èµ·ï¼å 为å³ä½¿æ¯åå¼å§çå æ ¸å¼å人å ä¹åºè¯¥æ£æ¥è¡¥ä¸ãå½ç¶ï¼å¦ä¹ å¦ä½å¨å æ ¸ç¯å¢ä¸ç¼ç¨æ²¡ææ¯æ¥çå ¶ä»äººåå¸ç代ç æ´å¥½ çæ¹æ³äºãæ¤å¤ï¼å®¡é è æ°¸è¿ä¾ä¸åºæ±ï¼éè¿æ¥ç代ç ï¼æ¨å¯ä»¥å¯¹æ´ä¸ªæµç¨ååºé大贡ç®ã 审æ¥ä»£ç å¯è½æ¯ä¸ä¸ªä»¤äººçççåæ¯ï¼ç¹å«æ¯å¯¹äºä¸ä¸ªæ°çå æ ¸å¼å人åæ¥è¯´ï¼ä»ä»¬ å¯è½ä¼å¯¹å ¬å¼è¯¢é®ä»£ç æå°ç´§å¼ ï¼èè¿äºä»£ç æ¯ç±é£äºææ´å¤ç»éªç人åå¸çãä¸è¿ï¼ å³ä½¿æ¯ææç»éªçå¼å人åç¼åç代ç ä¹å¯ä»¥å¾å°æ¹è¿ãä¹è®¸å¯¹è¯å®¡åï¼ææè¯å®¡åï¼ æ好ç建议æ¯ï¼æè¯å®¡è¯è®ºå½æé®é¢èä¸æ¯æ¹è¯ã询é®âå¨è¿æ¡è·¯å¾ä¸å¦ä½éæ¾éï¼â æ»æ¯æ¯è¯´âè¿éçéæ¯é误çâæ´å¥½ã ä¸åçå¼å人åå°ä»ä¸åçè§åº¦å®¡æ¥ä»£ç ãä¸äºä¸»è¦å ³æ³¨çæ¯ç¼ç æ ·å¼ä»¥å代ç è¡æ¯ å¦æå°¾éç©ºæ ¼ãå ¶ä»äººå°ä¸»è¦å ³æ³¨è¡¥ä¸ä½ä¸ºä¸ä¸ªæ´ä½å®ç°çåæ´æ¯å¦å¯¹å æ ¸æ好å¤ã ç¶èï¼å ¶ä»äººä¼æ£æ¥æ¯å¦åå¨éå®é®é¢ãå æ 使ç¨è¿åº¦ãå¯è½çå®å ¨é®é¢ãå¨å ¶ä» å°æ¹åç°ç代ç éå¤ã足å¤çææ¡£ã对æ§è½çä¸å©å½±åãç¨æ·ç©ºé´ABIæ´æ¹çãææ ç±»åçæ£æ¥ï¼å¦æå®ä»¬å¯¼è´æ´å¥½ç代ç è¿å ¥å æ ¸ï¼é½æ¯å欢è¿åå¼å¾çã