ã¯ããã«
ããã©ãŒæ©èœãSLE Gitã¯è»œéãã©ã³ãã§ãããšèããããŠããŸãã SVNã§Gitã«åãæ¿ããã®ã§ããã®å©ç¹ãæ倧éã«æããŸããããã©ã³ãã¯éåžžã«é«äŸ¡ãªããã»ã¹ã§ããããã©ã³ããäœæããã«ã¯ãäœæ¥ãã£ã¬ã¯ããªå šäœãã³ããŒããå¿ èŠããããŸããã Gitã§ã¯ãã¹ãŠãã·ã³ãã«ã§ãããã©ã³ããäœæãããšããããšã¯ã
.git/refs/heads
ãã©ã«ããŒå ã®ç¹å®ã®ã³ããããžã®æ°ãããã€ã³ã¿ãŒã®ã¿ãäœæããããšãæå³ããŸãã
Gitã§åå²ããããã®äž»ãªãŠãŒã¶ãŒã¬ãã«ã®ã³ãã³ãã¯ãgit-branchãgit-checkoutãgit-rebaseãgit-logããããŠãã¡ããgit-mergeã§ãã ç§ã«ãšã£ãŠã¯ãgit-mergeãæã倧ããªè²¬ä»»ã®ãããŸãŒã³ã§ããã巚倧ãªéæ³ã®ãšãã«ã®ãŒãšå€§ããªãã£ã³ã¹ã®ãã€ã³ãã ãšèããŠããŸãã ããããããã¯ããªãè€éãªããŒã ã§ãããGitã®ããªãé·ãçµéšã§ããããã®åŸ®åŠãªç¹ãç°åžžãªç¶æ³ã§æãå¹æçã«é©çšããèœåãç¿åŸããã«ã¯äžååãªå ŽåããããŸãã
git-mergeã®è€éããç解ãããã®çŽ æŽãããéæ³ã飌ãæ £ãããŠã¿ãŸãããã
ããã§ã¯ã å䜵ãæåããå Žåã®ã¿ãèããŸããã€ãŸãã 競åã®ãªãå䜵ãæå³ããŸãã 競åã®åŠçãšè§£æ±ºã¯ãå¥ã®èšäºã«ãµããããèå³æ·±ããããã¯ã§ãã Git internalsïŒdata storage and mergeã®èšäºãèªãããšã匷ããå§ãããŸãããã®èšäºã«ã¯ãç§ãäŸåããŠããå€ãã®éèŠãªæ å ±ãå«ãŸããŠããŸãã
ããŒã ã®è§£ååŠ
ããã¥ã¢ã«ã«ãããšãã³ãã³ãã®æ§æã¯æ¬¡ã®ãšããã§ãã
git merge [-n] [--stat] [--no-commit] [--squash] [-[no-] edit] [-s <æŠç¥>] [-X <æŠç¥ãªãã·ã§ã³>] [-[no-] rerere-autoupdate] [-m <msg>] [<commit> ...] git merge <msg> HEAD <commit> ... git merge --abort
æŠããŠãGitã«ã¯2ã€ã®ã¿ã€ãã®ããŒãžããããŸããæ©éãããŒãžãšçã®ããŒãžã§ãã äž¡æ¹ã®ã±ãŒã¹ã®ããã€ãã®äŸãèããŠã¿ãŸãããã
çã®ããŒãž
ããã€ãã®æ¹å
ãã¹ã¿ãŒïŒA-B-C-D \ æ©èœïŒX-Y
ãã¹ã¿ãŒ
git merge feature
ãã©ã³ãã§å®è¡ããŸãã
ãã¹ã¿ãŒïŒA-B-C-D-ïŒMïŒ \ / æ©èœïŒX-Y
ããã¯æãäžè¬çãªããŒãžãã¿ãŒã³ã§ãã ãã®å Žåãmasterãã©ã³ãã«æ°ããã³ãããïŒMïŒãäœæãããŸããããã¯2ã€ã®èŠªãåç §ããŸãïŒã³ãããDãšã³ãããYã ãã¹ã¿ãŒãã€ã³ã¿ãŒã¯ã³ãããïŒMïŒã«èšå®ãããŸãã ãã®ããã«ããŠãGitã¯ã©ã®å€æŽãã³ãããïŒMïŒã«å¯Ÿå¿ããã©ã®ã³ããããmasterãã©ã³ãã®æåŸã§ããããç解ããŸãã éåžžãããŒãžã³ãããã¯ãMerge branch 'feature'ããªã©ã®ã¡ãã»ãŒãžã§è¡ãããŸããã
-m
ã¹ã€ããã䜿çšããŠç¬èªã®ã³ãããã¡ãã»ãŒãžãå®çŸ©ããããšãã§ããŸãã
ãã®ã±ãŒã¹å°çšã«äœæãããã¹ããªããžããªã§ã³ãããã®å±¥æŽãèŠãŠã¿ãŸãããã
$ git log --oneline 92384bdïŒMïŒ bceb5a4 D 5dce5b1 Y 76f13e7 X d1920dc C 3a5c217 B 844af94 A
次ã«ãã³ãããæ å ±ïŒMïŒãèŠãŠã¿ãŸãããã
$ git cat-file -p 92384bd ããªãŒ2b5c78f9086384bd86a2ab9d00c7e41a56f01d04 芪bceb5a4ad88e80467404473b94cââ3e0758dd8e0be 芪5dce5b1edef64bd0d4e1039061a77be4d7182678 èè Andre <andrey.prokopyuk@gmail.com> 1380475972 +0400 ã³ããã¿ãŒã¢ã³ãã¬<andrey.prokopyuk@gmail.com> 1380475972 +0400 ïŒMïŒ
2ã€ã®èŠªããªããžããªãã¡ã€ã«ã®æå®ãããç¶æ ã«å¯Ÿå¿ããããªãŒãªããžã§ã¯ããããã³ã³ããããã人ã«é¢ããæ å ±ã衚瀺ãããŸãã
ãã¹ã¿ãŒãã€ã³ã¿ãŒãåç §ããå ŽæãèŠãŠã¿ãŸãããã
$ cat .git / refs / heads / master 92384bd77304c09b81dcc4485da165923b96ed5f
å®éãã³ãããã«ããã·ã¥ãããŸãïŒMïŒã
ã¹ã«ãã·ã¥ãšããŒã³ããã
ããããæ©èœãã©ã³ãã®å 容ãããªããæã¡è² ããããšãã§ãããšãããã©ãã§ãããïŒ ããšãã°ãæ¹åã¯å°ããã1ã€ã®è«ççãªã³ãããã«ããŸãé©åããããšãã§ããŸããããä»äºã®æäžã«åè»ã«éããŠå®¶ã§ç¶ããªããã°ãªããªãã£ãããšãå€æããŸãããïŒ ãã®å Žåã2ã€ã®æ¹æ³ããããŸãïŒãªããžããªããšã¯ã¹ããŒãããŠããå¥ã®ãã·ã³ã«ã€ã³ããŒãããããïŒç¹ã«é»è»ã«è¡ãã®ã«10åããããé§ ãŸã§çŽ1ãããããå ŽåïŒ-
push origin feature
äœæã
push origin feature
ã
äžå®å šãªã³ããããã¡ã€ã³ãã©ã³ãã«æ³šãããšã¯æªãããšã§ãããããªãã¯ããã«ã€ããŠäœããããå¿ èŠããããŸãã 1ã€ã®æ¹æ³ããããŠããããæãç°¡åãªæ¹æ³ã¯ã
--squash
ãªãã·ã§ã³ã§ãã
git merge feature --squash
ã¯ãæ©èœãã©ã³ãã®ãã¹ãŠã®ã³ãããã®å€æŽã
git merge feature --squash
ãããããã¹ã¿ãŒãã©ã³ãã«è»¢éããŠãã€ã³ããã¯ã¹ã«è¿œå ããŸãã ãã®å Žåã ããŒãžã³ãããã¯äœæãããŸãã ãæåã§è¡ãå¿ èŠããããŸãã
ããŒãžæã«
--no-commit
ãã©ã¡ãŒã¿ãŒãæž¡ãããšã«ãããsquashãã©ã¡ãŒã¿ãŒãªãã§åãåäœãå®çŸã§ããŸãã
ãã®ããŒãžãé©çšãããå Žåãæ©èœãã©ã³ãã®ã³ãããã¯å±¥æŽã«å«ãŸããŸããããSqã³ãããã«ã¯ãã¹ãŠã®å€æŽãå«ãŸããŸãã
ãã¹ã¿ãŒïŒA-B-C-D-å¹³æ¹ \ æ©èœïŒX-Y
åŸã§ããã¯ã©ã·ãã¯ã
git merge feature
ãå®è¡ããå Žå
git merge feature
ãããä¿®æ£ã§ããŸãã ãã®åŸãã¹ããŒãªãŒã¯æ¬¡ã®åœ¢åŒã«ãªããŸãã
ãã¹ã¿ãŒïŒA-B-C-D-Sq-ïŒMïŒ \ / æ©èœïŒX-Y
ã³ãããããã«ããŒãžããèŽåœçãªãšã©ãŒãç¯ããããšã«æ°ä»ããå ŽåãåçŽãªã³ãã³ã
git merge --abort
ãã¹ãŠãåãæ¶ãããšãã§ããŸãã å䜵äžã«ç«¶åãçºçããå Žåã§ãåãã³ãã³ããé©çšã§ããŸãããçŸæç¹ã§ã¯ç«¶åã解決ããããªãã§ãããã
å·»ãæ»ãïŒæ©éãããŒãžïŒ
ã³ãããå±¥æŽã®å¥ã®ã±ãŒã¹ãèããŠã¿ãŸãããã
ãã¹ã¿ãŒïŒA-B-C \ æ©èœïŒX-Y
ãã¹ãŠã¯ååãšåãã§ããããã¹ã¿ãŒãã©ã³ãã«ã¯ãã©ã³ãåŸã®ã³ãããã¯ãããŸããã ãã®å Žåãæ©éãããŒãžïŒå·»ãæ»ãïŒã ãã®å ŽåãããŒãžã³ãããã¯ãªãããã€ã³ã¿ãŒïŒãã©ã³ãïŒãã¹ã¿ãŒã¯åã«Yãã³ãããããããã«èšå®ãããæ©èœãã©ã³ãããããæããŸãã
ãã¹ã¿ãŒãæ©èœïŒA-B-C-X-Y
å·»ãæ»ããé²ãã«ã¯ã
--no-ff
ãªãã·ã§ã³ã䜿çšã§ããŸãã
git merge feature --no-ff -m '(M)'
ãå®è¡ããå Žåã次ã®å³ã衚瀺ãããŸãã
ãã¹ã¿ãŒïŒA-B-C-ïŒMïŒ \ / æ©èœïŒX-Y
æ©éããå¯äžèš±å®¹ãããåäœã§ããå Žåã
--ff-only
ãªãã·ã§ã³ãæå®ã§ããŸãã ãã®å Žåãå·»ãæ»ããããŒãžã«é©çšã§ããªãå ŽåãããŒãžãäžå¯èœã§ããããšã瀺ãã¡ãã»ãŒãžã衚瀺ãããŸãã æåã®äŸã§
--ff-only
ãªãã·ã§ã³ãè¿œå ããå Žåã«
--ff-only
ãŸãããã®äŸã§ã¯ãæ©èœãåå²ããåŸããã¹ã¿ãŒãã©ã³ãã§ã³ãããCãäœæãããŸããã
git pull origin branch_name
ãå®è¡ãããšã
--ff-only
ãããªãã®
--ff-only
ããšãè¿œå ã§ããŸãã ã€ãŸããorigin / branch_nameãã©ã³ããšããŒãžãããšãã«å·»ãæ»ããåãå ¥ããããªãå Žåãæäœã¯ãã£ã³ã»ã«ãããå®è¡ã§ããªãããšã«é¢ããã¡ãã»ãŒãžã衚瀺ãããŸãã
å䜵æŠç¥
git-mergeããŒã ã«ã¯ã--
--strategy
ãã¹ãã©ããžãŒãšããèå³æ·±ããªãã·ã§ã³ããããŸãã Gitã¯æ¬¡ã®ããŒãžæŠç¥ããµããŒãããŠããŸãã
- 解決ãã
- ååž°ç
- ç§ãã¡ã®ãã®
- ãã
- ãµãããªãŒ
æŠç¥ã解決ãã
解決æŠç¥ã¯ãåŸæ¥ã®3è éããŒãžã§ãã æšæºã®3è éããŒãžã¢ã«ãŽãªãºã ã¯ãå ±éã®ç¥å ãæã€2ã€ã®ãã¡ã€ã«ã«äœ¿çšãããŸãã åŸæ¥ããã®ã¢ã«ãŽãªãºã ã¯æ¬¡ã®æé ã®åœ¢åŒã§è¡šãããšãã§ããŸãã
- å ±éã®ç¥å ãæ€çŽ¢ãã
- å ±éã®ç¥å ã«é¢ããŠäž¡æ¹ã®ããŒãžã§ã³ã§å€æŽããããããã¯ãæ€çŽ¢ãã
- å€æŽãããªããŸãŸã®ãããã¯ãèšé²ãããŸãã
- åå«ã®1ã€ã§ã®ã¿å€æŽããããããã¯ã¯å€æŽæžã¿ãšããŠèšé²ããã
- äž¡æ¹ã®ããŒãžã§ã³ã§å€æŽããããããã¯ã¯ãå€æŽãåäžã§ããå Žåã«ã®ã¿èšé²ãããŸãããã以å€ã®å Žåã競åã宣èšããããã®è§£æ±ºããŠãŒã¶ãŒã«æäŸãããŸãã
ãã®æŠç¥ã«ã¯1ã€ã®æ¬ ç¹ããããŸããæåã®å ±éã³ããããåžžã«2ã€ã®ãã©ã³ãã®å ±éã®ç¥å ãšããŠéžæãããŸãã æåã®äŸã®å Žåãããã¯æããããŸãã
git merge feature -s resolve
å®å šã«äœ¿çšã§ããçµæãæåŸ ãããŸãã
ãã¹ã¿ãŒïŒA-B-C-D-ïŒMïŒ \ / æ©èœïŒX-Y
ããã§ãCã¯2ã€ã®ãã©ã³ãã®å ±éã³ãããã§ããããã®ã³ãããã«å¯Ÿå¿ãããã¡ã€ã«ããªãŒãå ±éã®ç¥å ãšèŠãªãããŸãã ãã®ã³ããã以éã«ãã¹ã¿ãŒããã³æ©èœãã©ã³ãã§è¡ãããå€æŽãåæããããã®åŸãæ¡ä»¶ä»ãã¢ã«ãŽãªãºã ã®ãã©ã°ã©ã4ããã³5ã«åŸã£ãŠãã³ãããïŒMïŒã®æ°ããããŒãžã§ã³ã®ãã¡ã€ã«ããªãŒãäœæãããŸãã
ã©ã®ãããªå Žåã解決æŠç¥ã®æ¬ åŠãçŸããŸããïŒ ã³ãããïŒMïŒã§ç«¶åã解決ããå¿ èŠãããããã®åŸéçºãç¶ç¶ããããäžåºŠ
git merge feature -s resolve
ãå®è¡ãããå Žåã«çŸã
git merge feature -s resolve
ã ãã®å Žåãã³ãããCã¯åã³å ±éã®ç¥å ãšããŠäœ¿çšããã競åãåã³çºçããä»å ¥ãå¿ èŠã«ãªããŸãã
ååž°çæŠç¥
ãã®æŠç¥ã¯ã解決æŠç¥ã®åé¡ã解決ããŸãã ãŸãã3è éããŒãžãå®è£ ããŸãããå®éã®ããŒãžã§ã¯ãªãã次ã®æ¡ä»¶ä»ãã¢ã«ãŽãªãºã ã«åŸã£ãŠæ§ç¯ããããä»®æ³ãç¥å ãç¥å ãšããŠäœ¿çšãããŸãã
- å ±éã®ç¥å ã®ãã¹ãŠã®åè£ãæ€çŽ¢ããã
- ãã§ãŒã³ã¯åè£ãããŒãžããæ°ãããä»®æ³ãç¥å ãäœæããŸããæè¿ã®ã³ãããã®åªå 床ãé«ããªãã競åã®åçŸãåé¿ãããŸãã
ãã®è¡åã®çµæã¯å ±éã®ç¥å ãšã¿ãªãããäžåœéå䜵ãè¡ãããŸãã
ãã®æŠç¥ã説æããããã«ãplasticscmããã°ã®èšäºMerge recursive strategyããäŸãåããŸãããã

ãããã£ãŠãmainãštask001ã®2ã€ã®ãã©ã³ãããããŸãã ãããŠãéçºè ã¯åé¯ã®è¯ãå€æè ã§ããããšãå€æããŸããïŒåœŒãã¯mainãã©ã³ãã®commit 15ãštask001ãã©ã³ãã®commit 12ãããã³commit 16ãšcommit 16ãããŒãžããŸããã ããããããä»®æ³ãç¥å ã®æ§ç¯ã䌎ãååž°çæŠç¥ã¯ç§ãã¡ãå©ããŸãã ãã®çµæã次ã®å³ãåŸãããŸãã

ååž°æŠç¥ã«ã¯ã
-X
ã¹ã€ããã䜿çšããŠ
git-merge
ã³ãã³ãã«æž¡ãããå€ãã®ãªãã·ã§ã³ããããŸãã
- ç§ãã¡ãšåœŒãã®ãã®
競åãèªåçã«è§£æ±ºããããã«äœ¿çšãããŸãã ç§ãã¡ã®ãã®-ãç§ãã¡ã®ãããŒãžã§ã³ããdstãã®ããŒãžã§ã³ã圌ãã®ãã®ã奜ã-ã圌ãã®ãããŒãžã§ã³ã奜ãã
- åæ£èŠåïŒéæ£èŠåïŒ
ãªãã·ã§ã³ãããŸããŸãªã¿ã€ãã®ã©ã€ã³ãã£ãŒããšããŒãžããéã®èª€ã£ã競åãé²ããŸãã
- diff-algorithm = [patience | minimal | histogram | myers] ãããã³å¿èãªãã·ã§ã³
ãã¡ã€ã«å·®å¥åã¢ã«ãŽãªãºã ã®éžæã
ãããã®ãªãã·ã§ã³ã®è©³çŽ°ã«ã€ããŠã¯ã git-diffã®ããã¥ã¡ã³ããã芧ãã ããã ã€ãŸãããããã®ã¢ã«ãŽãªãºã ã®ããããã£ã¯æ¬¡ã®ãšããã§ãã
ããã©ã«ãã§ã¯ãmyersã¯æšæºã®è²ªæ¬²ãªã¢ã«ãŽãªãºã ã§ãã ããã©ã«ãã§äœ¿çšãããŸãã
æå° -æå°éã®å€æŽãæ€çŽ¢ããŸãããæéãããããŸãã
å¿è -ãpatience diffãã¢ã«ãŽãªãºã ã䜿çšããŸãã ããã«ã€ããŠã¯ãã¢ã«ãŽãªãºã ã®äœè ãã ããŸãã¯SOã®ç°¡ç¥çã§èªãããšãã§ããŸãã
ãã¹ãã°ã©ã -ãäœé »åºŠã®å ±éèŠçŽ ããµããŒãããããšèšè¿°ãããŠããç®æšã§å¿èã¢ã«ãŽãªãºã ãæ¡åŒµããŸãã æ£çŽã«èšããšãã©ã®ãããªå ·äœçãªã±ãŒã¹ãæ瀺ãããŠããããšãã質åã«å¯Ÿããæ確ãªçããèŠã€ããããšãã§ããŸããã§ããã
- ã¹ããŒã¹ã®å€æŽãç¡èŠããã¹ãŠã®ã¹ããŒã¹ãç¡èŠãeolã®ã¹ããŒã¹ãç¡èŠ
ãããã®ãªãã·ã§ã³ã®ã«ãŒãã¯ããã¯ãgit-diffã«ãããããŒãžäžã®ãã¡ã€ã«ã®åºå¥ã«é¢é£ããŠããŸãã
ignore-space- change-è¡ã®ã¹ããŒã¹ã®æ°ã®éããããã³è¡æ«ã®ã¹ããŒã¹ã®éããç¡èŠããŸãã
ignore-all- space-æ¯èŒæã«ã¹ããŒã¹ã¯å®å šã«ç¡èŠãããŸããã
ignore-space-at-eol-è¡æ«ã®ã¹ããŒã¹ã®éãã¯ç¡èŠãããŸãã
- rename-threshold = <n>
ãã®ãªãã·ã§ã³ã¯ããã¡ã€ã«ãæ°ãããã¡ã€ã«ã§ã¯ãªããgit-diffãã«ãŠã³ããããªãã£ãååãå€æŽããããã¡ã€ã«ãšèŠãªãããšãã§ãããããå€ãèšå®ããŸãã ããšãã°ã-Xrename-threshold=90%
ã¯ãåé€ããããã¡ã€ã«ã®å 容ã®90ïŒ ãå«ããã¡ã€ã«ãååå€æŽããããšèŠãªãããããšãæå³ããŸãã
- ãµãããªãŒ[= <ãã¹>]
ãã®ãªãã·ã§ã³ã䜿çšããŠååž°ããŒãžãå®è¡ãããšããµãããªãŒæŠç¥ã®ããé«åºŠãªããŒãžã§ã³ã«ãªããŸããã¢ã«ãŽãªãºã ã¯ãããŒãžäžã«ããªãŒãã©ã®ããã«é©åããããšããä»®å®ã«åºã¥ããŠããŸãã 代ããã«ããã®å Žåãç¹å®ã®ãªãã·ã§ã³ã瀺ãããŸãã
ã¿ã³æŠç¥
ãã®æŠç¥ã¯ã3ã€ä»¥äžã®ãã©ã³ããããŒãžããããã«äœ¿çšãããŸãã çµæãšããŠãã³ãããã«ã¯3ã€ä»¥äžã®èŠªãå«ãŸããŸãã
ãã®æŠç¥ã«ã¯ãæœåšçãªç«¶åã«é¢ããŠçŽ°å¿ã®æ³šæãå¿ èŠã§ãã ãã®ç¹ã§ãã¿ã³æŠç¥ã䜿çšããå ŽåãããŒãžãæåŠããããšããããŸãã
ç§ãã¡ã®æŠç¥
ç§ãã¡ãšååž°æŠç¥ãæ··åããªãã§ãã ããã
git merge -s ours obsolete
ãå®è¡ãããšãããªãã¯ã¡ãã£ãšèšã£ãïŒç§ã¯ãã©ã³ãã®å±¥æŽãããŒãžãããããå»æ¢ããããã©ã³ãã§çºçãããã¹ãŠã®å€æŽãç¡èŠãããã 代ããã«ãç§ãã¡ã®ä»£ããã«æ¬¡ã®ãªãã·ã§ã³ã䜿çšããããšããå§ãããŸãã
å»æ¢ããã$ git checkout $ git merge -s recursive -Xtheirs master
ç§ãã¡ã®æŠç¥ã¯ãããæ ¹æ¬çãªæ段ã§ãã
ãµãããªãŒæŠç¥
ãã®æŠç¥ã説æããããã«ã ãPro Gitã ãšããæ¬ã®ãµãããªãŒã®ããŒãžã®ç« ã®äŸãèŠãŠã¿ãŸãããã
ãããžã§ã¯ãã«æ°ãããªã¢ãŒããªããžããªã§ããrackãè¿œå ããŸãã
$ git remote add rack_remote git@github.comïŒschacon / rack.git $ git fetch rack_remote èŠåïŒäžè¬çãªã³ãããã¯ãããŸãã ãªã¢ãŒãïŒãªããžã§ã¯ãã®ã«ãŠã³ãïŒ3184ãå®äºã remoteïŒãªããžã§ã¯ãã®å§çž®ïŒ100ïŒ ïŒ1465/1465ïŒãå®äºã ãªã¢ãŒãïŒåèš3184ïŒãã«ã¿1952ïŒãåå©çš2770ïŒãã«ã¿1675ïŒ ãªããžã§ã¯ãã®åãåãïŒ100ïŒ ïŒ3184/3184ïŒã677.42 KiB | 4 KiB / sãå®äºã ãã«ã¿ã®è§£æ±ºïŒ100ïŒ ïŒ1952/1952ïŒãå®äºã git@github.comããïŒschacon / rack * [æ°ãããã©ã³ã]ãã«ã-> rack_remote /ãã«ã * [æ°ãããã©ã³ã]ãã¹ã¿ãŒ-> rack_remote /ãã¹ã¿ãŒ * [æ°ãããã©ã³ã] rack-0.4-> rack_remote / rack-0.4 * [æ°ãããã©ã³ã] rack-0.9-> rack_remote / rack-0.9 $ git checkout -b rack_branch rack_remote / master ãã©ã³ãrack_branchã¯ããªã¢ãŒããã©ã³ãref / remotes / rack_remote / masterã远跡ããããã«èšå®ãããŠããŸãã æ°ãããã©ã³ããrack_branchãã«åãæ¿ããŸãã
masterãã©ã³ããšrack_branchãã©ã³ãã®äœæ¥ãã£ã¬ã¯ããªããŸã£ããç°ãªãããšã¯æããã§ãã ã¹ã«ãã·ã¥ã䜿çšããŠrack_branchããmasterã«ãã¡ã€ã«ãè¿œå ããå¿ èŠã®ãªãäºå®ã§å±¥æŽãè©°ãŸãã®ãé²ããŸãã
$ git checkout master $ git merge --squash -s subtree --no-commit rack_branch ã¹ã«ãã·ã¥ã³ããã-HEADãæŽæ°ããªã èªåããŒãžã¯ããŸããããŸããã èŠæ±ã©ããã«ã³ãããããåã«åæ¢ããŸãã
ã©ãã¯ãããžã§ã¯ãã®ãã¡ã€ã«ã¯äœæ¥ãã£ã¬ã¯ããªã«ãããŸãã
æåŸã®èšè
ãã®ãããGitãšã®äœæ¥äžã«åŸãããgit-mergeã®ç¹æ ã«é¢ãããã¹ãŠã®ç¥èãéããŸããã ããã誰ããå©ããŠãããã°å¬ãããããã誰ããææãè£ã£ãããäžæ£ç¢ºãééããèšæ£ããŠããããããããç§ãçªç¶å©ããŠããããå¬ããã