éåžžãæ¬¡ã®å Žåã« git rebase
ã䜿çšããŸãã
- 以åã®ã³ãããã¡ãã»ãŒãžã®ç·šé
- è€æ°ã®ã³ãããã1ã€ã«ãŸãšãã
- äžèŠã«ãªã£ãã³ãããã®åé€ãããã¯æã¡æ¶ã
èŠå
ã³ãããå±¥æŽã倿Žãããšããªããžããªã䜿ãä»ã®äººã«ãšã£ãŠç®¡çãå°é£ã«ãªãå Žåãããããããªããžããªã«ããã·ã¥æžã¿ã®ã³ãããããªããŒã¹ããã®ã¯æšå¥šãããŸããã å®å šã«ãªããŒã¹ããæ¹æ³ã«ã€ããŠã¯ãããã«ãªã¯ãšã¹ãã®ããŒãžã«ã€ããŠããåç §ããŠãã ããã
ãã©ã³ãã«å¯Ÿããã³ãããã®ãªããŒã¹
ä»ã®ãã©ã³ããšçŸåšã®ãã©ã³ãã®ç¶æ ãšã®éã®ãã¹ãŠã®ã³ãããããªããŒã¹ããã«ã¯ãã·ã§ã«ïŒWindowsã®ã³ãã³ãããã³ããããããã¯MacãLinuxã®ã¿ãŒããã«ïŒã§ä»¥äžã®ã³ãã³ããå ¥åããŠãã ããã
git rebase --interactive OTHER-BRANCH-NAME
ããæç¹ã«å¯Ÿããã³ãããã®ãªããŒã¹
çŸåšã®ãã©ã³ãã®æåŸã®ããã€ãã®ã³ãããããªããŒã¹ããã«ã¯ãã·ã§ã«ã«ä»¥äžã®ã³ãã³ããå ¥åããŠãã ããã
git rebase --interactive HEAD~7
ãªããŒã¹ã«å©çšã§ããã³ãã³ã
ãªããŒã¹ã®éã«å©çšã§ããã³ãã³ãã¯6ã€ãããŸãã
pick
pick
ã¯ãåã«ã³ããããå«ãŸããŠããããšãæå³ããŸããpick
ã³ãã³ãã®é åºãå ¥ãæ¿ãããšããªããŒã¹ã®å®è¡äžã«ã³ãããã®é åºã倿ŽãããŸãã ã³ããããå«ããªãã®ã§ããã°ãè¡å šäœãåé€ããŠãã ãããreword
reword
ã³ãã³ãã¯pick
ã«äŒŒãŠããŸãããããã䜿çšãããšããªããŒã¹ ããã»ã¹ãäžæåæ¢ããã³ããã ã¡ãã»ãŒãžã倿Žããããšãã§ããŸãã ã³ãããã«ãã倿Žã¯åœ±é¿ãããŸãããedit
- ã³ãããã
edit
ãããšãã³ããããä¿®æ£ããããšãã§ããŸããã€ãŸããã³ãããã远å ããå®å šã«ã³ãããã倿Žããããšãã§ããŸãã ãŸãããªããŒã¹ãç¶ããåã«ããã«ã³ããããããããšãã§ããŸãã ããããããšã§å€§ããªã³ããããå°ããªã³ããã矀ã«åå²ããããã³ãããäžã®ééã£ã倿Žãåãé€ãããããããšãã§ããŸãã squash
- ãã®ã³ãã³ãã䜿ããšã2 ã€ä»¥äžã®ã³ããããçµåã㊠1 ã€ã®ã³ãããã«ã§ããŸãã ã³ãããã¯ãã®äžã«ããã³ãããã« squash ãããŸãã Git ã¯ãã©ã¡ãã®å€æŽã«ã€ããŠãèšè¿°ããæ°ããã³ãããã¡ãã»ãŒãžãæžãããŠãããŸãã
fixup
- ããã¯
squash
ã«äŒŒãŠããŸãããããŒãžãããã³ãããã®ã¡ãã»ãŒãžã¯ç Žæ£ãããŠããŸãã ã³ãããã¯ãã®äžäœã®ã³ãããã«åçŽã«ããŒãžãããéžèããã³ãããã®ã¡ãã»ãŒãžãã©ã¡ãã®å€æŽã®èšè¿°ãšããŠã䜿ãããŸãã exec
- ãã®ã³ãã³ãã¯ãã³ãããã«å¯ŸããŠä»»æã®ã·ã§ã«ã³ãã³ããå®è¡ãããŠãããŸãã
git rebase
ã䜿çšããäŸ
䜿çšããã³ãã³ãã«é¢ä¿ãªããGit ã¯æ¢å®ã®ããã¹ã ãšãã£ã¿ãŒãèµ·åããéžæããç¯å²å ã®ã³ãããã®è©³çްã瀺ããã¡ã€ã«ãéããŸãã ãã®ãã¡ã€ã«ã¯ä»¥äžã®ããã«ãªããŸãã
pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A
pick 4ca2acc i cant' typ goods
pick 7b36971 something to move before patch B
# Rebase 41a72e6..7b36971 onto 41a72e6
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
ãã®æ å ±ãäžããäžãžèŠãŠãããšã以äžã®ããšãåãããŸãã
- 7ã€ã®ã³ãããããªã¹ããããŠãããåºçºç¹ããçŸåšã®ãã©ã³ãã®ç¶æ ãŸã§ã«7ã€ã®å€æŽããã£ãããšã瀺ãããŠããŸãã
- ãªããŒã¹ããããšã«ããã³ãããã¯ãå€ã倿ŽïŒå é ïŒããæ°ãã倿ŽïŒæ«å°ŸïŒã®é ã«äžŠã¹ãããŠããŸãã
- åè¡ã«ã¯ãã³ãã³ã (æ¢å®ã§ã¯
pick
)ãã³ããã SHAãã³ããã ã¡ãã»ãŒãžãäžèŠ§è¡šç€ºãããŸããgit rebase
æé å šäœã¯ãäž»ã«ããã 3 ã€ã®åã®æäœã«é¢ãããã®ã§ãã è¡ã£ã倿Žã¯ãªããžããªã« ãªããŒã¹ãããŸãã - ã³ãããã®åŸãGit ã«ãã£ãŠã䜿çšããŠããã³ãããã®ç¯å² (
41a72e6..7b36971
) ãéç¥ãããŸãã - æåŸã«ãGitã¯ã³ãããããªããŒã¹ããéã«å©çšã§ããã³ã¡ã³ãã瀺ãããšã§å€å°ã®ãã«ããæäŸããŠããŸãã