ããã¯ãUbuntu OnlineãFedora OnlineãWindows ãªã³ã©ã€ã³ ãšãã¥ã¬ãŒã¿ãŒãMAC OS ãªã³ã©ã€ã³ ãšãã¥ã¬ãŒã¿ãŒãªã©ãè€æ°ã®ç¡æãªã³ã©ã€ã³ ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ããããã䜿çšããŠãOnWorks ç¡æãã¹ãã£ã³ã° ãããã€ããŒã§å®è¡ã§ããã³ãã³ã git-subtree ã§ãã
ããã°ã©ã ïŒ
NAME
git-subtree - ãµãããªãŒããŸãšããŠããŒãžãããªããžããªããµãããªãŒã«åå²ããŸã
SYNOPSIS
git ãµãããªãŒ -P ãè¿œå
git ãµãããªãŒ -P ãè¿œå
git ãµãããªãŒ ãã« -P
git ãµãããªãŒ -P ãæŒã
git ãµãããªãŒ ããŒãž -P
git ãµãããªãŒ åå² -P ããªãã·ã§ã³ã ]
DESCRIPTION
ãµãããªãŒã䜿çšãããšããµããããžã§ã¯ããã¡ã€ã³ ãããžã§ã¯ãã®ãµããã£ã¬ã¯ããªã«å«ããããšãã§ããŸãã
ãªãã·ã§ã³ã§ããµããããžã§ã¯ãã®å šå±¥æŽãå«ããŸãã
ããšãã°ãã©ã€ãã©ãªã®ãœãŒã¹ ã³ãŒãããµããã£ã¬ã¯ããªãšããŠå«ããããšãã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã
ãµãããªãŒã¯ãåãã¿ã¹ã¯çšã®ãµãã¢ãžã¥ãŒã«ãšæ··åããªãã§ãã ããã ããã§ã¯ãªã
ãµãã¢ãžã¥ãŒã«ããµãããªãŒã¯ç¹å¥ãªæ§é ãå¿ èŠãšããŸãã (.gitmodule ãã¡ã€ã«ã
gitlinks) ããªããžããªã«ååšããããªããžããªã®ãšã³ããŠãŒã¶ãŒã«åŒ·å¶ããªãã§ãã ããã
äœãç¹å¥ãªããšããããããµãããªãŒãã©ã®ããã«æ©èœããããç解ãããããŸãã ãµãããªãŒã¯åãªããµããã£ã¬ã¯ããªã§ã
ä»»æã®æ¹æ³ã§ãããžã§ã¯ãã«ã³ããããåå²ãããã³ããŒãžã§ããŸãã
欲ããã§ãã
ãŸãããµãããªãŒ ããŒãžæŠç¥ã®äœ¿çšãšæ··åããªãã§ãã ããã ã¡ã€ã³
éãã¯ãä»ã®ãããžã§ã¯ãããµããã£ã¬ã¯ããªãšããŠããŒãžãã以å€ã«ã次ã®ããšãã§ããããšã§ãã
ãããžã§ã¯ããããµããã£ã¬ã¯ããªã®å±¥æŽå šäœãæœåºããããã
ã¹ã¿ã³ãã¢ãã³ ãããžã§ã¯ãã ãµãããªãŒã®ããŒãžæŠç¥ãšã¯ç°ãªããååŸã«äº€äºã«è¡ãããšãã§ããŸã
ãããXNUMXã€ã®æäœã®éã ã¹ã¿ã³ãã¢ãã³ ã©ã€ãã©ãªãæŽæ°ãããå Žåã¯ã次ã®ããšãã§ããŸãã
å€æŽããããžã§ã¯ãã«èªåçã«ããŒãžããŸãã å éšã®ã©ã€ãã©ãªãæŽæ°ããå Žå
ãããžã§ã¯ããå€æŽãåã³ãåå²ãããŠã©ã€ãã©ãªã«ããŒãžããããšãã§ããŸã
ãããžã§ã¯ãã
ããšãã°ãããã¢ããªã±ãŒã·ã§ã³çšã«äœæããã©ã€ãã©ãªãå¥ã®å Žæã§åœ¹ç«ã€ããã«ãªã£ãå Žåã
å±¥æŽå šäœãæœåºãããããç¬èªã® git ãªããžããªãšããŠå ¬éã§ããŸãã
ã¢ããªã±ãŒã·ã§ã³ ãããžã§ã¯ãã®å±¥æŽã誀ã£ãŠæ··ããŠããŸãå¯èœæ§ããããŸãã
å 端
ã³ãããã¡ãã»ãŒãžããããã«ä¿ã€ããã«ã人ã ãèªåã®ã³ãããã¡ãã»ãŒãžãåå²ããããšããå§ãããŸã
ãµãããªãŒãšã¡ã€ã³ ãããžã§ã¯ãã®éã§å¯èœãªéãã³ãããããŸãã ã€ãŸãã
ã©ã€ãã©ãªãšã¡ã€ã³ ã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã«åœ±é¿ããå€æŽãè¡ããXNUMX åã«åããŠã³ãããããŸã
åã ããããã°ãåŸã§ã©ã€ãã©ãªã®ã³ããããåå²ãããšãã«ããããã®èª¬æ
ãŸã æå³ããããŸãã ãããããããããªãã«ãšã£ãŠéèŠã§ãªãå Žåãããã¯éèŠã§ã¯ãããŸãã å¿ èŠ. ã®ãã
ãµãããªãŒã¯ãã³ãããã®ã©ã€ãã©ãªã«é¢é£ããªãéšåãåçŽã«é€å€ããŸãã
åŸã§ãµããããžã§ã¯ãã«åå²ããŸãã
ã³ãã³ã
å ããŸã
ãäœæããŸãæå®ããããããã®å 容ãã€ã³ããŒãããããšã«ããããµãããªãŒãŸã
ãšãªã¢ãŒã. æ°ããã³ããããèªåçã«äœæããã
ã€ã³ããŒãããããããžã§ã¯ãã®å±¥æŽãèªåã®ãã®ã«ã ãš - æŒãã€ã¶ããåäžã®ã³ãããã®ã¿ãã€ã³ããŒãããŸã
å±¥æŽå šäœã§ã¯ãªãããµããããžã§ã¯ãããã
ããŒãž
ãŸã§ã®æè¿ã®å€æŽãããŒãžã«ãµãããªãŒã éåžžæãšåæ§ git
ããŒãžãããã¯ããªãèªèº«ã®ããŒã«ã«å€æŽãåé€ããŸããã ãããã®å€æŽãããŒãžããã ãã§ã
ææ°ã®. ãš - æŒãã€ã¶ãããã¹ãŠãå«ãã³ãããã XNUMX ã€ã ãäœæããŸãã
å±¥æŽå šäœã«ããŒãžããã®ã§ã¯ãªããå€æŽããŸãã
ããªãã䜿çšããŠããå Žå - æŒãã€ã¶ããããŒãžæ¹åã¯åžžã«åæ¹ã§ããå¿ èŠã¯ãããŸããã ããªãã¯ã§ãã
ããšãã°ããã®ã³ãã³ãã䜿çšããŠãv2.5 ãã v2.4 ã«æéãããã®ãŒããŸãã ããŒãžããå Žå
競åãçºçããå Žåã¯ãéåžžã®æ¹æ³ã§è§£æ±ºã§ããŸãã
ãã«
ãŸãã«ãã®ããã« ããŒãžããããå¹³è¡ç· git ãã« ããæå®ãããåç §ããã§ãããããšããç¹ã§
æå®ããããªã¢ãŒã ãªããžããªã
ããã·ã¥
ãããŸãã split (äžèšåç §) æäŸãããŠãã git ããã·ã¥ ããã·ã¥ãã
ãªããžããªãžã®çµæãšåç §ã ããã¯ããµãããªãŒãããã·ã¥ããããã«äœ¿çšã§ããŸã
ãªã¢ãŒããªããžããªã®ããŸããŸãªãã©ã³ãã
split
ã®å±¥æŽããæ°ããåæãããžã§ã¯ãå±¥æŽãæœåºããŸãã ãµãããªãŒã ã®
æ°ããå±¥æŽã«ã¯ã圱é¿ãåããã³ããã (ããŒãžãå«ã) ã®ã¿ãå«ãŸããŸãã ãš
ãããã®åã³ãããã«ã¯ã次ã®å 容ãå«ãŸããŠããŸããããžã§ã¯ãã®ã«ãŒãã§
ãµããã£ã¬ã¯ããªã®ä»£ããã«ã ãããã£ãŠãæ°ããäœæãããå±¥æŽã¯ãšã¯ã¹ããŒãã«é©ããŠããŸã
å¥ã® git ãªããžããªãšããŠã
åå²ãæåãããšãåäžã®ã³ããã ID ã stdout ã«åºåãããŸãã ãã
æ°ããäœæãããããªãŒã® HEAD ã«å¯Ÿå¿ããŸãããããã¯æäœã§ããŸã
ããªãã¯æ¬²ããã
ãŸã£ããåãå±¥æŽã®ç¹°ãè¿ãåå²ã¯ãåäžã§ããããšãä¿èšŒãããŸã (ã€ãŸãã
åãã³ããã ID ãçæããŸã)ã ãã®ãããæ°ããã³ããããè¿œå ããŠãã
ååå²ãããšãæ°ããã³ãããã¯å±¥æŽã®äžã«ã³ããããšããŠæ·»ä»ãããŸã
ååçæããã®ã§ã git ããŒãž å人ã¯æåŸ ã©ããã«åäœããŸãã
䜿çšããå Žåã¯æ³šæããŠãã ãã - æŒãã€ã¶ã ããŒãžãããšãã¯ãéåžžã --ååå
åå²ãããšãã
OPTIONS
-qã-quiet
stderr ã§äžèŠãªåºåã¡ãã»ãŒãžãæå¶ããŸãã
-dã-debug
stderr ã«ããã«äžèŠãªåºåã¡ãã»ãŒãžãçæããŸãã
-P ã --prefix=
æäœãããµãããªãŒãžã®ãªããžããªå ã®ãã¹ãæå®ããŸãã ãã®ãªãã·ã§ã³
ãã¹ãŠã®ã³ãã³ãã§å¿ é ã§ãã
-m , --ã¡ãã»ãŒãž=
ãã®ãªãã·ã§ã³ã¯ãè¿œå ãããŒãžãããã³ãã«ã«å¯ŸããŠã®ã¿æå¹ã§ã (äžæ)ã ç¹å®ãšããŠ
ããŒãž ã³ãããã®ã³ããã ã¡ãã»ãŒãžã
OPTIONS FOR è¿œå ã ããŒãžã æŒãã PULL
- æŒãã€ã¶ã
ãã®ãªãã·ã§ã³ã¯ãaddãmergeãããã³ pull ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
ãµãããªãŒ ãããžã§ã¯ãã®å±¥æŽå šäœãããŒãžãã代ããã«ãåäžã®ãããžã§ã¯ãã®ã¿ãçæããŸãã
ããŒãžããããã¹ãŠã®çžéç¹ãå«ãã³ããããè¡ãããã®æ°ãããã®ãããŒãžããŸã
ãããžã§ã¯ãã«ã³ãããããŸãã
ãã®ãªãã·ã§ã³ã䜿çšãããšããã°ã®ä¹±éãã軜æžããã®ã«åœ¹ç«ã¡ãŸãã ãã¹ãŠã®å€æŽãèŠãããšæã人ã¯ãã£ãã«ããŸãã
ããã¯ã䜿çšããŠããã©ã€ãã©ãªã® v1.0 ãš v1.1 ã®éã§çºçããŸããã
äžéããŒãžã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã«å«ãŸããŠããŸããã
䜿ãæ¹ - æŒãã€ã¶ã ãŸããåããµããããžã§ã¯ããè€æ°å«ãŸããŠããå Žåã®åé¡ãåé¿ããã®ã«ã圹ç«ã¡ãŸã
åããããžã§ã¯ãã§äœåºŠãããŸãã¯åé€ãããŠããå床远å ãããŸãã ãã®ãããªå Žåã¯ãããã§ã¯ãããŸãã
ãããã«ããæŽå²ãçµã¿åãããã®ã¯çã«ããªã£ãŠããŸãã
history ã¯ã©ã®ãµãããªãŒã«å±ããŸããã
ããã«ã - æŒãã€ã¶ããç°ãªãããŒãžã§ã³éã§ååŸã«åãæ¿ããããšãã§ããŸã
å³å¯ã«è»¢éããã®ã§ã¯ãªãããµãããªãŒã®ã git ãµãããªãŒ ããŒãž - æŒãã€ã¶ã åžžã«èª¿æŽããŸã
ãã®ã³ãããã«å°éããå Žåã§ããæ£ç¢ºã«æå®ãããã³ãããã«äžèŽãããµãããªãŒ
以åã«è¿œå ããããã€ãã®å€æŽãå ã«æ»ãå¿ èŠããããŸãã
䜿çšãããã©ãã - æŒãã€ã¶ããããŒã«ã« ãªããžããªã§è¡ã£ãå€æŽã¯ãã®ãŸãŸæ®ããŸã
åŸã§åå²ããŠäžæµã®ãµããããžã§ã¯ãã«éä¿¡ã§ããŸãã
OPTIONS FOR SPLIT
--泚é=
ãã®ãªãã·ã§ã³ã¯ãåå²ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
åæå±¥æŽãçæãããšãã«ãè¿œå ããŸãåã³ãããã®ãã¬ãã£ãã¯ã¹ãšããŠ
ã¡ãã»ãŒãžã åãã³ãããã¡ãã»ãŒãžã§æ°ããã³ããããäœæããŠããã®ã§ããããã
å ã®ã³ããããšã¯ç°ãªãã³ã³ãã³ããããã¯ããããåºå¥ããã®ã«åœ¹ç«ã¡ã
æ··ä¹±ãé¿ããã
åå²ãããã³ã«ãåããã®ã䜿çšããå¿ èŠããããŸãããŸãã¯ããã§ãªããã°ããªãã¯æã£ãŠããŸãã
æ°ããåäœæãããå±¥æŽãå€ãå±¥æŽãšåäžã§ããããšãä¿èšŒããŸãã ããã¯
ããŒãžãæ£ããæ©èœããªãããã«ããŸãã ãšã«ãã git subtree ã¯ãããæ©èœãããããšããŸããã
--rejoin ã䜿çšããå Žåã¯ç¹ã«ããã§ãããåžžã«æå¹ã§ãããšã¯éããŸããã
-b ã -- ãã©ã³ã =
ãã®ãªãã·ã§ã³ã¯ãåå²ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
åæå±¥æŽãçæããåŸããšããååã®æ°ãããã©ã³ããäœæããŸãããã
æ°ããæŽå²ãå«ãŸããŠããŸãã ããã¯ãããã«äžæµã«ããã·ã¥ããã®ã«é©ããŠããŸãã
ãŸã ååšããŠããŠã¯ãªããŸããã
--ignore-join
ãã®ãªãã·ã§ã³ã¯ãåå²ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
ããªãã䜿çšããŠããå Žå --ååå ãgitãµãããªãŒã¯ããã®å±¥æŽåæ§ç¯ãæé©åããããšããŸã
æåŸã®ã³ããã以éã®æ°ããã³ãããã®ã¿ãçæãã --ååå . --ç¡èŠ-çµå ãããç¡å¹ã«ããŸã
å±¥æŽå šäœã®åçæã匷å¶ããŸãã 倧èŠæš¡ãªãããžã§ã¯ãã§ã¯ãããã¯
é·ãæéãããããŸãã
--onto=
ãã®ãªãã·ã§ã³ã¯ãåå²ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
ãµãããªãŒãæåã« git ãµãããªãŒä»¥å€ã®ãã®ã䜿çšããŠã€ã³ããŒããããå Žåããã®
å±¥æŽã¯ãgit ãµãããªãŒãæåŸ ãããã®ãšäžèŽããªãå ŽåããããŸãã ãã®å Žåãæå®ã§ããã®ã¯
ã³ããã ID ãµããããžã§ã¯ãã®å±¥æŽã®æåã®ãªããžã§ã³ã«å¯Ÿå¿ãã
ãããžã§ã¯ãã«ã€ã³ããŒãããããã®ã§ãããgit ãµãããªãŒã¯ãã®å±¥æŽãæ§ç¯ããããšããŸã
ããããã
䜿çšããå Žå git ãµãããªãŒ å ããŸãããã®ãªãã·ã§ã³ã¯å¿ èŠãããŸããã
--ååå
ãã®ãªãã·ã§ã³ã¯ãåå²ã³ãã³ãã«å¯ŸããŠã®ã¿æå¹ã§ãã
åå²åŸãæ°ããäœæãããåæå±¥æŽãã¡ã€ã³ã«ããŒãžããŸã
èšç»ã ããããã°ãå°æ¥ã®åå²ã§ã¯ãå±¥æŽã®äžéšã®ã¿ãæ€çŽ¢ã§ããŸãã
ææ°ã® --rejoin 以éã«è¿œå ãããŸããã
åå²ã³ããããäžæµã®ãµããããžã§ã¯ãã«ããŒãžãããŠããŸã£ãå Žåã
ææ°ã®ã¢ããã¹ããªãŒã ããŒãžã§ã³ãååŸããŸããããã«ãããgit ã®ããŒãž ã¢ã«ãŽãªãºã ãããå€ãã®
競åãã€ã³ããªãžã§ã³ãã«åé¿ããŸãïŒãããã®åæã³ãããããã§ã«äžéšã§ããããšãèªèããŠããããïŒ
ã¢ããã¹ããªãŒã ãªããžããªã®)ã
æ®å¿µãªããããã®ãªãã·ã§ã³ã䜿çšãããšã git ãã° æ°ãããã¹ãŠã®äœåãªã³ããŒã衚瀺ãã
äœæãããã³ããã (ãªãªãžãã«ãšåæ)ã
ãã¹ãŠã®ããŒãžãè¡ãå Žå - æŒãã€ã¶ãã䜿çšããªãã§ãã ãã --ååå ããªããåå²ãããšãããªããªã
ãšã«ããããµããããžã§ã¯ãã®å±¥æŽããããžã§ã¯ãã®äžéšã«ããããããŸããã
å®æœäŸ 1. è¿œå COMMAND
å€éšãªããžããªãè¿œå ãããããŒã«ã«ãªããžããªããããšä»®å®ããŸããã
ãã³ã㌠ã©ã€ãã©ãªãžã ãã®å Žåããµããã£ã¬ã¯ããªãšã㊠git-subtree ãªããžããªãè¿œå ããŸã
æ¢åã® git-extensions ãªããžããªã® ~/git-extensions/:
$ git subtree add --prefix=git-subtree --squash \
git://github.com/apenwarr/git-subtree.git ãã¹ã¿ãŒ
ãã¹ã¿ãŒ æå¹ãªãªã¢ãŒãåç §ã§ããå¿ èŠããããå¥ã®ãã©ã³ãåã«ããããšãã§ããŸã
--squash ãã©ã°ã¯çç¥ã§ããŸããããããããšã³ãããã®æ°ãå¢ããŸãã
ããŒã«ã« ãªããžããªã«å«ãŸããŠããŸãã
ä»ã§ã¯ã ~/git-extensions/git-subtree ãã¹ã¿ãŒããã®ã³ãŒããå«ããã£ã¬ã¯ããª
git-extensions ãªããžããªã® git://github.com/apenwarr/git-subtree.git ã®ãã©ã³ãã
å®æœäŸ 2. ãšãã¹ A ãµãããªãŒ 䜿çšãã å°å¿µã MERGE ãã㊠PULL
äŸãšããŠãgit ãœãŒã¹ ã³ãŒãã®ãªããžããªã䜿çšããŠã¿ãŸãããã ãŸããèªåã®ã³ããŒãå ¥æããŠãã ãã
git.git ãªããžããªã®:
$ git clone git://git.kernel.org/pub/scm/git/git.git test-git
$ cd ãã¹ã git
gitweb (ã³ããã 1130ef3) ã¯ãã³ããã 0a8f4f0 ã®æç¹ã§ git ã«ããŒãžãããŸããã
åå¥ã«ç¶æãããªããªããŸããã ãããããããå¥ã ã«ç¶æãããŠãããšæ³åããŠãã ããã
ãã以éã® git ã® gitweb ãžã®å€æŽãæœåºããã¢ããã¹ããªãŒã ãšå ±æããŸãã ããªãã¯åºæ¥ã
ãããè¡ãïŒ
$ git subtree split --prefix=gitweb --annotate='(åå²) ' \
0a8f4f0^.. --onto=1130ef3 --ååå \
--branch gitweb-latest
$ gitk gitweb-ææ°
$ git ããã·ã¥ [ã¡ãŒã«ä¿è·]:whatever/gitweb.git gitweb-latest:master
ïŒã䜿çšããŠãããŸã 0a8f4f0^.. ããã¯ãã0a8f4f0 ããçŸåšãŸã§ã®ãã¹ãŠã®å€æŽããæå³ããããã§ãã
0a8f4f0 èªäœãå«ãããŒãžã§ã³ã")
gitweb ãæåã«ããŒãžãããŠããå Žå git ãµãããªãŒ å ããŸã (ãŸãã¯ä»¥åã®åå²ããã£ã
--rejoin ãæå®ããŠãã§ã«è¡ãããŠããå Žå)ããã¹ãŠã®åå²ãè¡ãããšãã§ããŸãã
å¥åŠãªã³ããã ID ãèŠããŠããã«ã¯:
$ git subtree split --prefix=gitweb --annotate='(split) ' --rejoin \
--branch gitweb-latest2
ãŸããäžæµã®ãããžã§ã¯ãããã®å€æŽãåãããã«ç°¡åã«ããŒãžããŠæ»ãããšãã§ããŸãã
$ git ãµãããªãŒ ãã« --prefix=gitweb \
[ã¡ãŒã«ä¿è·]:whatever/gitweb.git ãã¹ã¿ãŒ
ãŸãã¯ã - æŒãã€ã¶ããå®éã«ã¯ä»¥åã®ããŒãžã§ã³ã® gitweb ã«å·»ãæ»ãããšãã§ããŸãã
$ git subtree merge --prefix=gitweb --squash gitweb-latest~10
次ã«ãããã€ãã®å€æŽãå ããŸãã
$ æ¥ä» >gitweb/myfile
$ git add gitweb/myfile
$ git commit -m 'created myfile'
ããäžåºŠæ©éãããŸãã
$ git subtree merge --prefix=gitweb --squash gitweb-latest
å€æŽããã®ãŸãŸæ®ã£ãŠããããšã«æ³šæããŠãã ããã
$ ls -l gitweb/myfile
ãããŠããããåå²ããŠãæšæºã® gitweb ãšæ¯èŒããŠå€æŽã確èªã§ããŸãã
git log gitweb-latest..$(git ãµãããªãŒåå² --prefix=gitweb)
å®æœäŸ 3. ãšãã¹ A ãµãããªãŒ 䜿çšãã ãã©ã³ã
å€ãã®ãã¡ã€ã«ãšãµããã£ã¬ã¯ããªãå«ããœãŒã¹ ãã£ã¬ã¯ããªãããã次ã®ããšãè¡ããããšããŸãã
lib ãã£ã¬ã¯ããªãç¬èªã® git ãããžã§ã¯ãã«æœåºããŸãã ãããè¡ãç°¡åãªæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ãŸããæ°ãããªããžããªã奜ããªå Žæã«äœæããŸãã
$
$ git init --bare
å ã®ãã£ã¬ã¯ããªã«æ»ããŸãã
$ git subtree split --prefix=lib --annotate="(split)" -b split
次ã«ãæ°ãããã©ã³ããæ°ãã空ã®ãªããžããªã«ããã·ã¥ããŸãã
$ git ããã·ã¥ã¹ããªãã:ãã¹ã¿ãŒ
onworks.net ãµãŒãã¹ã䜿çšããŠãªã³ã©ã€ã³ã§ git-subtree ã䜿çšãã