å·®ååºåã®èªã¿æ¹ïŒããããã¡ã€ã«ãšå€æŽãçè§£ãã
å·®ååºåã®èªã¿æ¹ïŒããããã¡ã€ã«ãšå€æŽãçè§£ãã
å·®ååºåã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ã®æ®éçãªèšèªã§ãããã¹ãŠã®éçºè ã¯ãã³ãŒãã¬ãã¥ãŒäžãããŒãžç«¶åã®è§£æ±ºæããªãŒãã³ãœãŒã¹ã®è²¢ç®ããããããé©çšãããšããªã©ãæ¥åžžçã«å·®ååºåã«ééããŸããããã§ããå€ãã®éçºè ã¯å·®ååºåãå¹ççã«èªãæ¹æ³ãåŠãã ããšããããŸããã
ãã®ã¬ã€ãã§ã¯ãæãäžè¬çãªåœ¢åŒã§ã®å·®ååºåã®èªã¿æ¹ãããããã¡ã€ã«ã®ä»çµã¿ã倿Žãèªä¿¡ãæã£ãŠè§£éããæ¹æ³ã«ã€ããŠèª¬æããŸãã
å·®ååºåãšã¯äœã§ããïŒ
å·®ååºåã¯ã2ã€ã®ãã¡ã€ã«ãŸãã¯ãã¡ã€ã«çŸ€ã®éã®çžéç¹ãæ§é åããŠè¡šçŸãããã®ã§ãã1970幎代ã«ãã«ç ç©¶æã® Douglas McIlroy ã«ãã£ãŠäœããã diff ãŠãŒãã£ãªãã£ã¯ãGitãMercurialãããã³ãã®ä»ã®ã»ãšãã©ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã®åºç€ã§ããç¶ããŠããŸãã
git diff ãŸãã¯ä»»æã® diff ã³ãã³ããå®è¡ãããšãåºåã«ã¯äœãå€ãã£ãã®ããã©ãã§å€ãã£ãã®ããã©ã®ããã«å€ãã£ãã®ããæ£ç¢ºã«è¡šç€ºãããŸããããã¯äººéã«ãæ©æ¢°ã«ãèªã¿åãã圢åŒã§ãã
unified diff 圢åŒãçè§£ãã
unified diff 圢åŒã¯ãçŸåšæãåºã䜿çšãããŠããåºå圢åŒã§ãã倿Žã hunk ã«ã°ã«ãŒãåããå hunk ã®åã«ã¯ãã¡ã€ã«å ã§å€æŽç®æãèŠã€ããã®ã«åœ¹ç«ã€ã³ã³ããã¹ãè¡ã眮ãããŸãã
Hunk ããããŒã®æ§é
å hunk ã¯æ¬¡ã®ãããªããããŒã§å§ãŸããŸãã
@@ -start,count +start,count @@
ãããåè§£ããŠã¿ãŸãããã
| éšå | æå³ |
|------|---------|
| @@ | hunk ã®éå§ã瀺ãããªãã¿ |
| -3,7 | å
ã®ãã¡ã€ã«ã§ã¯ããã® hunk ã¯3è¡ç®ããå§ãŸã7è¡ã«ããããŸã |
| +3,8 | æ°ãããã¡ã€ã«ã§ã¯ããã® hunk ã¯3è¡ç®ããå§ãŸã8è¡ã«ããããŸã |
| @@ | çµäºããªãã¿ |
ããããŒã®çŽåŸã®ã³ã³ããã¹ãè¡ïŒéåžžã¯é¢æ°åãŸãã¯è¿ãã®ã³ã¡ã³ãïŒã¯ã倿Žããã¡ã€ã«ã®ã©ã®éšåã«å±ããããç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
Hunk å ã®è¡
hunk å ã®åè¡ã®å é ã«ã¯1ã€ã®æåãä»ããŸãã
context line (unchanged)
-added line (present in new file, absent in old)
+added line (present in new file, absent in old)
- ã³ã³ããã¹ãè¡ã¯ã¹ããŒã¹ã§å§ãŸããŸãããããã®è¡ã¯äž¡æ¹ã®ããŒãžã§ã³ã§åäžã§ãããåºæºç¹ãæäŸããŸãã
- åé€è¡ã¯ãã€ãã¹èšå·ïŒ
-ïŒã§å§ãŸããŸãããããã®è¡ã¯å€ããã¡ã€ã«ã«ã¯ååšããŸãããåé€ãããŸããã - 远å è¡ã¯ãã©ã¹èšå·ïŒ
+ïŒã§å§ãŸããŸãããããã®è¡ã¯å€æŽããããã¡ã€ã«ã§æ°ãããã®ã§ãã
å®è·µäŸ
颿°ã倿Žããã diff ã®äŸã次ã«ç€ºããŸãã
@@ -5,7 +5,9 @@
def greet(name):
- print("Hello, " + name)
- print("Welcome!")
+ message = f"Hello, {name}!"
+ print(message)
+ print("We are glad to see you.")
+
if name == "admin":
print("You have admin privileges.")
ãã® diff ã®èªã¿æ¹ïŒ
- å€ãããŒãžã§ã³ã§ã¯ã"Hello, " ãšååãç¶ã㊠"Welcome!" ãåºåããŠããŸããã
- æ°ããããŒãžã§ã³ã§ã¯ããã©ãŒãããæžã¿ã®ã¡ãã»ãŒãžæååãäœæãããããåºåããæšæ¶ã®è¡ã远å ããadmin ãã§ãã¯ã¯å€æŽããã«ç¶æããŠããŸãã
- 2è¡ãåé€ããïŒ
-è¡ïŒã3è¡ã远å ããïŒ+è¡ïŒã空ã®+è¡ã¯èªã¿ãããã®ããã«ç©ºè¡ãç¶æããŠããŸãã
ããããã¡ã€ã«ïŒé©çšã§ãã diff
ããããã¡ã€ã«ã¯ãåã«ãã¡ã€ã«ã«ä¿åããã diff ã§ãããæ
£äŸçã« .patch ãŸã㯠.diff æ¡åŒµåãä»ããŸããããããã¡ã€ã«ã¯ãã³ãŒãããŒã¹å
šäœãå
±æããã«å€æŽãå
±æããããã®ç§»æ€å¯èœãªæ¹æ³ãšããŠæ©èœããŸãã
ããããäœæãã
Git ã䜿çšããŠãææ°ã®ã³ãããããããããäœæããŸãã
git format-patch HEAD~1
ãŸãã¯ãã³ããããããŠããªã倿ŽããããããäœæããŸãã
git diff > my-changes.patch
ããããé©çšãã
察象ã®ãªããžããªã«ããããé©çšããŸãã
git apply my-changes.patch
ãŸãã¯ãåŸæ¥ã® patch ã³ãã³ãã䜿çšããŸãã
patch -p1 < my-changes.patch
-p1 ãã©ã°ã¯ããã¡ã€ã«ãã¹ããæåã®ãã£ã¬ã¯ããªèŠçŽ ãåé€ããŸããããã«ããããããã®äœæè
ãšé©çšè
ã®éã®ãã£ã¬ã¯ããªæ§é ã®éããèæ
®ã§ããŸãã
äžè¬çãªå·®ååºå圢åŒ
unified diff 以å€ã«ããæ¬¡ã®åœ¢åŒã«ééããããšããããŸãã
ããŒãã« diffïŒNormal DiffïŒ
å
ã® diff ã³ãã³ãã®ããã©ã«ãåºåã§ãã倿Žã¯ãaïŒè¿œå ïŒãcïŒå€æŽïŒãdïŒåé€ïŒãªã©ã®ã³ãã³ãã䜿çšããŠãè¡ã®å€æŽã远å ãåé€ã®æç€ºãšããŠè¡šç€ºãããŸãã
3c3
< Hello world
---
> Hello beautiful world
ã³ã³ããã¹ã diffïŒContext DiffïŒ
倿Žã®åšå²ã«3è¡ã®ã³ã³ããã¹ããæäŸããå€ã圢åŒã§ãã倿Žãããè¡ã瀺ãããã«æå笊ã䜿çšããŸãã
ãµã€ããã€ãµã€ã diffïŒSide-by-Side DiffïŒ
åäžãã¡ã€ã«åœ¢åŒã§ã¯ãªãã代ããã«2ã€ã®åã䞊ã¹ãŠè¡šç€ºããŸããããã¯ã°ã©ãã£ã«ã«ãªå·®åããŒã«ããªã³ã©ã€ã³ã®å·®åãã§ãã«ãŒã§äžè¬çã§ãã
ã³ãŒãã¬ãã¥ãŒã§ã®å·®ååºåã®èªã¿æ¹
ãã«ãªã¯ãšã¹ããã¬ãã¥ãŒãããšãã¯ã次ã®èŠçŽ ã«æ³šç®ããŸãã
- hunk ããããŒïŒåœ±é¿ãåãããã¡ã€ã«ãšé¢æ°ãããããŸãã
- 远å è¡ãšåé€è¡ã®æ¯çïŒéèŠãªãã¡ã€ã«ã§å€§éã®å€æŽãããå Žåã¯ãããæ³šææ·±ã確èªããå¿ èŠããããŸãã
- ã³ã³ããã¹ãè¡ïŒåšå²ã®ããžãã¯ããããã倿Žãæ£ãããã©ããã®è©äŸ¡ã«åœ¹ç«ã¡ãŸãã
- 空çœã®ã¿ã®å€æŽïŒå€ãã®å·®åããŒã«ã¯ããããç°ãªãæ¹æ³ã§åŒ·èª¿è¡šç€ºããŸããã¬ãã¥ãŒãç ©éã«ããå¯èœæ§ãããããã§ãã
diff ãè§£éããããã®ãã¹ããã©ã¯ãã£ã¹
- diff ãäžããäžãžããã¡ã€ã«ããšã«èªã¿ãŸããããã¯å€æŽãè¡ãããé åºãšäžèŽããŸãã
- 倿Žãããã³ãŒãã®è¿ãã«ãã倿ŽãããŠããªãã³ã³ããã¹ãè¡ã«æ³šæãæããŸãããããã¯æ°æ§ã®ã³ãŒãéã®æ§é çãªé¢ä¿ãæããã«ããŸãã
- å·®åãã¥ãŒã§æ§æåŒ·èª¿è¡šç€ºããµããŒãããããŒã«ã䜿çšããŸããè²ã䜿ããšãã¿ãŒã³ãèŠã€ãããããªããŸãã
- 倧ã㪠diff ãã¬ãã¥ãŒãããšãã¯ããã¹ããã¡ã€ã«ããå§ããŠãäœè ãã©ã®ãããªåäœã®å€æŽãæå³ããŠããããçè§£ããŸãã
å·®ååºåãçè§£ããããšã¯ãå ±åéçºã®åºç€ãšãªãã¹ãã«ã§ããdiff ãèªãããšã«æ £ããŠãããšãã³ãŒãã¬ãã¥ãŒãããŒãžç«¶åãããããã¡ã€ã«ãã¯ããã«èªä¿¡ãæã£ãŠæ±ããããã«ãªããŸãã