玹ä»ã®ä»£ããã«
ããã«ã¡ã¯ïŒä»æ¥ã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ãã€ãŸã Git ã«ã€ããŠèª¬æããŸãã
Git ã®åºæ¬
Git ã¯ã³ãŒãã®åæ£ããŒãžã§ã³ç®¡çã·ã¹ãã ã§ãããªããããå¿ èŠãªã®ã§ãããã? åæ£ããŒã ã«ã¯ãäœæ¥ã管çããããã®äœããã®ã·ã¹ãã ãå¿ èŠã§ããæéã®çµéãšãšãã«çºçããå€åã远跡ããããã«å¿ èŠã§ããã€ãŸããã©ã®ãã¡ã€ã«ãã©ã®ããã«å€æŽãããã®ãã段éçã«ç¢ºèªã§ããå¿ èŠããããŸããããã¯ãåäžã¿ã¹ã¯ã®ã³ã³ããã¹ãã§äœãå€æŽããããã調æ»ããå€æŽãå ã«æ»ãããšãã§ããå Žåã«ç¹ã«éèŠã§ããGitã®ã€ã³ã¹ããŒã«
ã³ã³ãã¥ãŒã¿ã« Java ãã€ã³ã¹ããŒã«ããŸããããWindows ãžã®ã€ã³ã¹ããŒã«
ãã€ãã®ããã«ãexe ãã¡ã€ã«ãããŠã³ããŒãããŠå®è¡ããå¿ èŠããããŸããããã§ã¯ãã¹ãŠãç°¡åã§ããæåã® Google ãªã³ã¯ãã¯ãªãã¯ããã€ã³ã¹ããŒã«ãå®è¡ããã ãã§ãããããè¡ãã«ã¯ãWindows ãæäŸãã bash ã³ã³ãœãŒã«ã䜿çšããŸããWindows ã§ã¯ãGit Bash ãå®è¡ããå¿ èŠããããŸãã[ã¹ã¿ãŒã] ã¡ãã¥ãŒã§ã®è¡šç€ºã¯æ¬¡ã®ãšããã§ãã

Linux ãžã®ã€ã³ã¹ããŒã«
Git ã¯å ã Linux ã«ãŒãã«éçºçšã«äœæãããããŒã«ã§ãããããéåžžãGit 㯠Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®äžéšã§ããããã§ã«ã€ã³ã¹ããŒã«ãããŠããŸããããããããã§ãªãç¶æ³ããããŸãã確èªããã«ã¯ãã¿ãŒããã«ãéã㊠git --version ãšèšè¿°ããå¿ èŠããããŸããããããããçããåŸãããå Žåã¯ãäœãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸãããã¿ãŒããã«ãéããUbuntu ã« Git ãã€ã³ã¹ããŒã«ããŸããç§ã¯ Ubuntu ã§äœæ¥ããŠããã®ã§ããã®ããã«äœãæžãã¹ãããæããŠãã ãã: sudo apt-get install gitãmacOS ã«ã€ã³ã¹ããŒã«ãã
ããã§ãããŸã Git ããã§ã«ååšãããã©ããã確èªããå¿ èŠããããŸãããæã¡ã§ãªãå Žåã¯ãããããææ°ããŒãžã§ã³ãããŠã³ããŒãããã®ãæãç°¡åãªå ¥ææ¹æ³ã§ããXcode ãã€ã³ã¹ããŒã«ãããŠããå ŽåãGit ã¯èªåçã«ã€ã³ã¹ããŒã«ãããŸããGitã®èšå®
Git ã«ã¯ãäœæ¥ãéä¿¡ãããŠãŒã¶ãŒã®ãŠãŒã¶ãŒèšå®ããããŸããGit ã¯ã³ãããã®äœææã«ãã®æ å ±ã Author ãã£ãŒã«ããšããŠååŸãããããããã¯çã«ããªã£ãŠãããå¿ èŠã§ãã次ã®ã³ãã³ããå®è¡ããŠããã¹ãŠã®ãããžã§ã¯ãã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããèšå®ããŸãã
git config --global user.name "Ivan Ivanov"
git config --global user.email ivan.ivanov@gmail.com
ç¹å®ã®ãããžã§ã¯ãã®äœæè
ãå€æŽããå¿
èŠãããå Žåã¯ãã--globalããåé€ã§ããŸããããã«ããã次ã®ããšãããããŸãã
git config user.name "Ivan Ivanov"
git config user.email ivan.ivanov@gmail.com
ã¡ãã£ãšããçè«...
ãã®ãããã¯ã«å ¥ãããã«ãããã€ãã®æ°ããèšèãšè¡åã玹ä»ããå¿ èŠããããŸã...- gitãªããžããª
- å°å¿µ
- ãã©ã³ã
- ããŒãž
- è¡çª
- åŒã
- æŒã
- äžéšã®ãã¡ã€ã« (.gitignore) ãç¡èŠããæ¹æ³
Git ã®ã¹ããŒã¿ã¹
Git ã«ã¯ãç解ããŠèŠããŠããå¿ èŠãããããã€ãã®åããããŸãã- 远跡ãããŠããªã
- ä¿®æ£ããã
- æŒåºããã
- é¢äžãã
ãããã©ã®ããã«ç解ããã°ããã§ãããã?
ãããã¯ãã³ãŒããå«ããã¡ã€ã«ã«é©çšãããã¹ããŒã¿ã¹ã§ãã- äœæãããŠããªããžããªã«ãŸã è¿œå ãããŠããªããã¡ã€ã«ã¯ããæªè¿œè·¡ãã¹ããŒã¿ã¹ã«ãªããŸãã
- Git ãªããžããªã«æ¢ã«è¿œå ãããŠãããã¡ã€ã«ã«å€æŽãå ãããšããã®ã¹ããŒã¿ã¹ã¯ãå€æŽæžã¿ãã«ãªããŸãã
- å€æŽãããã¡ã€ã«ã®äžããå¿ èŠãªãã®ãéžæãããšããããã®ã¯ã©ã¹ããã¹ããŒãžã³ã°ãã¹ããŒã¿ã¹ã«å€æŽãããŸãã
- ã¹ããŒãžã³ã°ãããç¶æ ã§æºåããããã¡ã€ã«ããã³ããããäœæãããGit ãªããžããªã«å ¥ããããŸãããã®åŸããã¹ããŒãžã³ã°æžã¿ãã¹ããŒã¿ã¹ã®ãã¡ã€ã«ã¯ãªããªããŸãããã ããã¹ããŒã¿ã¹ããå€æŽæžã¿ãã®ãã¡ã€ã«ããŸã ååšããå¯èœæ§ããããŸãã

ã³ããããšã¯äœã§ãã?
ããŒãžã§ã³ç®¡çã«é¢ããŠã¯ãã³ããããäž»èŠãªã€ãã³ãã§ããããã«ã¯ãã³ãããã®éå§ä»¥éã«è¡ããããã¹ãŠã®å€æŽãå«ãŸããŸããã³ãããã¯ãåäžãªã³ã¯ããããªã¹ãã®ããã«çžäºã«ãªã³ã¯ãããŸããããå ·äœçã«èšããšãæåã®ã³ãããããããŸãã2 çªç®ã®ã³ããããäœæããããšãæåã®ã³ãããã®åŸã«äœãæ¥ãããèªèããŸãããã®ããã«ããŠãæ å ±ã远跡ããããšãã§ããŸããã³ãããã«ã¯ãã¡ã¿ããŒã¿ãšåŒã°ããç¬èªã®æ å ±ããããŸãã- ã³ãããã®äžæã®èå¥åãã³ããããèŠã€ããããã«äœ¿çšã§ããŸãã
- ã³ãããã®äœæè ã®åå (ã³ããããäœæãã人)
- ã³ããããäœæãããæ¥ä»
- ã³ãããäžã«äœãè¡ããããã説æããã³ã¡ã³ã

æ¯åºãšã¯äœã§ãã?
ãã©ã³ãã¯ãããã³ããããžã®ãã€ã³ã¿ã§ããã³ãããã¯ã©ã®ã³ããããèªåããåã«ããããç¥ã£ãŠããããããã©ã³ããã³ããããæãå Žåã以åã®ãã¹ãŠã®ã³ãããããã®ã³ãããã«é©çšãããŸãããããã£ãŠãåãã³ããããæããã©ã³ããå¿ èŠãªæ°ã ãæã€ããšãã§ãããšèšããŸããäœæ¥ã¯ãã©ã³ãå ã§è¡ããããããæ°ããã³ããããäœæããããšããã©ã³ãã¯ãã€ã³ã¿ãããæ°ããã³ãããã«ç§»åããŸããGit ãå§ãã
ããŒã«ã« ãªããžããªã ãã§ãªãããªã¢ãŒã ãªããžããªã§ãäœæ¥ã§ããŸããå¿ èŠãªã³ãã³ããç·Žç¿ããã«ã¯ãããŒã«ã« ãªããžããªã«éå®ããããšãã§ããŸãããã¹ãŠã®ãããžã§ã¯ãæ å ±ã¯ããŒã«ã«ã® .git ãã©ã«ããŒã«ã®ã¿ä¿åãããŸãããªã¢ãŒã ãªããžããªã«ã€ããŠè©±ããŠããå Žåããã¹ãŠã®æ å ±ã¯ãªã¢ãŒã ãµãŒããŒäžã®ã©ããã«ä¿åãããŸããããŒã«ã«ã«ä¿åãããã®ã¯ãããžã§ã¯ãã®ã³ããŒã®ã¿ã§ããããŒã«ã« ã³ããŒã«å ããããå€æŽã¯ããªã¢ãŒã ãªããžããªã«ããã·ã¥ (git Push) ã§ããŸãããããšä»¥äžã®èª¬æã§ã¯ãã³ã³ãœãŒã«ã§ã® Git ã®æäœã«ã€ããŠèª¬æããŸãããã¡ãããäœããã® GUI ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ (IntelliJ IDEA ãªã©) ã䜿çšããããšãã§ããŸããããŸããå®è¡ãããŠããã³ãã³ããšãã®æå³ãç解ããå¿ èŠããããŸããããŒã«ã« ãªããžããªã§ã® Git ã®æäœ
次ã«ãèšäºãèªã¿ãªãããç§ãè¡ã£ããã¹ãŠã®æé ãå®è¡ããããšããå§ãããŸããããã«ãããææã®ç解ãšç¿ç床ãåäžããŸããããŠãé£æ¬²ãããããŸãïŒ:) ããŒã«ã« ãªããžããªãäœæããã«ã¯ã次ã®ããã«èšè¿°ããå¿ èŠããããŸãã
git init

git status

- git add -A â ãã¹ãŠã®ãã¡ã€ã«ããã¹ããŒãžã³ã°æžã¿ãã¹ããŒã¿ã¹ã«è¿œå ããŸã
- git add ãâ ãã®ãã©ã«ããŒãšãã¹ãŠã®ãµããã©ã«ããŒãããã¹ãŠã®ãã¡ã€ã«ãè¿œå ããŸããåºæ¬çã«ã¯ååãšåãã§ã
- git add <ãã¡ã€ã«å> â ç¹å®ã®ãã¡ã€ã«ãè¿œå ããŸããããã§ã¯ãæ£èŠè¡šçŸã䜿çšããŠãç¹å®ã®ãã¿ãŒã³ã«åŸã£ãŠãã¡ã€ã«ãè¿œå ã§ããŸããããšãã°ã git add *.java: ããã¯ãjava æ¡åŒµåãæã€ãã¡ã€ã«ã®ã¿ãè¿œå ããããšãæå³ããŸãã
git add *.txt
ã¹ããŒã¿ã¹ã確èªããã«ã¯ããã§ã«ç¥ãããŠããã³ãã³ãã䜿çšããŸãã
git status

git commit -m "all txt files were added to the project"

git log

git status

git status

git diff

git add test_resource.txt
git commit -m "added hello word! to test_resource.txt"
ãã¹ãŠã®ã³ãããã確èªããã«ã¯ã次ã®ããã«èšè¿°ããŸãã
git log

git add GitTest.java
git commit -m "added GitTest.java"
git status

.gitignore ã®æäœ
æããã«ããªããžããªã«ã¯ãœãŒã¹ ã³ãŒãã®ã¿ãä¿æããä»ã«ã¯äœãä¿æããªãã§ãã ãããããã§ã¯ãä»ã«äœãããåŸãã§ããããïŒå°ãªããšããéçºç°å¢ã«ãã£ãŠçæãããã³ã³ãã€ã«æžã¿ã®ã¯ã©ã¹ããã¡ã€ã«ãGit ã«ããããç¡èŠããããã«æ瀺ããã«ã¯ãç¹å¥ãªãã¡ã€ã«ãäœæããå¿ èŠããããŸãããããå®è¡ããŸãããããžã§ã¯ãã®ã«ãŒãã« .gitignore ãšãããã¡ã€ã«ãäœæããŸãããã®ãã¡ã€ã«ã®åè¡ã¯ãç¡èŠãããã¿ãŒã³ãè¡šããŸãããã®äŸã§ã¯ã.gitignore ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
```
*.class
target/
*.iml
.idea/
```
èŠãŠã¿ãŸããã:
- æåã®è¡ã¯ã.class æ¡åŒµåãæã€ãã¹ãŠã®ãã¡ã€ã«ãç¡èŠããŸãã
- 2 è¡ç®ã¯ããã¿ãŒã²ããããã©ã«ããŒãšããã«å«ãŸãããã¹ãŠã®ãã®ãç¡èŠããããšã§ãã
- 3 è¡ç®ã¯ã.iml æ¡åŒµåãæã€ãã¹ãŠã®ãã¡ã€ã«ãç¡èŠããŸãã
- 4 è¡ç®ã¯ .idea ãã©ã«ããŒãç¡èŠããŸãã
git status


git add .gitignore
git commit -m "added .gitignore file"
ãããŠä»ãæ£å¿µå Žã§ããã远跡ãããŠããªããã³ã³ãã€ã«æžã¿ã¯ã©ã¹ GitTest.class ããããããã Git ãªããžããªã«è¿œå ããããããŸããã§ãããããã§ã.gitignore ãã¡ã€ã«ã®å¹æã確èªã§ããã¯ãã§ãã
git status

ãã©ã³ããªã©ã®æäœ
åœç¶ã®ããšãªããã1 ã€ã®ãã©ã³ãã ãã§äœæ¥ããã®ã¯å€ç¬ãªéçºè ã«ãšã£ãŠã¯äžäŸ¿ã§ãããããŒã ã«è€æ°äººãããå Žåã¯äžå¯èœã§ãããããæ¯åºãããçç±ã§ããåã«è¿°ã¹ãããã«ããã©ã³ãã¯ã³ããããžã®ç§»åå¯èœãªãã€ã³ã¿ã«ãããŸããããã®ããŒãã§ã¯ãããŸããŸãªãã©ã³ãã§ã®äœæ¥ãã€ãŸããããã©ã³ãããå¥ã®ãã©ã³ãã«å€æŽãããŒãžããæ¹æ³ãã©ã®ãããªç«¶åãçºçããããªã©ã«ã€ããŠèª¬æããŸãããªããžããªå ã®ãã¹ãŠã®ãã©ã³ãã®ãªã¹ãã衚瀺ããèªåãã©ã®ãã©ã³ãã«ããããç解ããã«ã¯ã次ã®ããã«èšè¿°ããå¿ èŠããããŸãã
git branch -a

- çŸåšãããã©ã³ãã«åºã¥ããŠæ°ãããã©ã³ããäœæããŸã (99% ã®å Žå)
- ç¹å®ã®ã³ãããã«åºã¥ããŠãã©ã³ããäœæãã (ã±ãŒã¹ã® 1%)
ç¹å®ã®ã³ãããã«åºã¥ããŠãã©ã³ããäœæããŸããã
ã³ãããã®äžæã®èå¥åã«äŸåããŸãããããèŠã€ããã«ã¯ã次ã®ããã«æžããŸãã
git log

git checkout -b development 6c44e53d06228f888f2f454d3cb8c1c976dd73f8
ãã©ã³ãã¯ãmaster ãã©ã³ãããã®æåã® 2 ã€ã®ã³ãããã®ã¿ã䜿çšããŠäœæãããŸããããã確èªããã«ã¯ããŸãå¥ã®ãã©ã³ãã«åãæ¿ããŠãããã§ã®ã³ãããæ°ã確èªããŸãã
git status
git log

git branch -a

çŸåšã®ãã©ã³ãã«åºã¥ããŠãã©ã³ããäœæããŸããã
ãã©ã³ããäœæãã 2 çªç®ã®æ¹æ³ã¯ãå¥ã®ãã©ã³ããããã©ã³ããäœæããããšã§ããmaster ãã©ã³ããããŒã¹ã«ããŠãã©ã³ããäœæããããšèããŠããŸãããŸããããã«åãæ¿ããå¿ èŠãããã次ã®ã¹ãããã¯æ°ãããã®ãäœæããããšã§ããèŠãŠã¿ãŸããã:- git checkout master â master ãã©ã³ãã«åãæ¿ããŸã
- git status â å®éã« master ãã©ã³ãã«ããããšã確èªããŸã

git checkout -b feature/update-txt-files

çŽäºè§£æ±º
競åãšã¯äœãã説æããåã«ããããã©ã³ããå¥ã®ãã©ã³ãã«ããŒãžããããšã«ã€ããŠèª¬æããå¿ èŠããããŸãããã®å³ã¯ããããã©ã³ããå¥ã®ãã©ã³ãã«ããŒãžããããã»ã¹ã瀺ããŠããŸãã

git add *.txt
git commit -m "updated txt files"
git log

git checkout master
git merge feature/update-txt-files
git log

git branch -D feature/update-txt-files
ãããŸã§ã®ãšãããã¹ãŠãæããã§ããã¯ã? ç¶æ³ãããã«è€éã«ããŠã¿ãŸããããtxt ãã¡ã€ã«ãå床å€æŽããå¿
èŠããããšããŸãããã ãããã®ãã¡ã€ã«ã¯ master ãã©ã³ãã§ãå€æŽãããããã«ãªããŸããã€ãŸãã䞊è¡ããŠå€åããŠãããŸããæ°ããã³ãŒãã master ãã©ã³ãã«ããŒãžããããšãã«ãGit ã¯äœããã¹ãããç解ã§ããŸãããããè¡ããïŒmaster ã«åºã¥ããŠæ°ãããã©ã³ããäœæããtext_resource.txt ã«å€æŽãå ããŠããã®äœæ¥ã®ã³ããããäœæããŸãã
git checkout -b feature/add-header
... we make changes to the file

git add *.txt
git commit -m "added header to txt"

git checkout master
⊠we updated test_resource.txt

git add test_resource.txt
git commit -m "added master header to txt"
ããã§æãèå³æ·±ãç¹ã§ããfeature/add-header ãã©ã³ãããã®å€æŽã master ã«ããŒãžããå¿
èŠããããŸããç§ãã¡ã¯ master ãã©ã³ãã«ããã®ã§ã次ã®ããã«æžãã ãã§æžã¿ãŸãã
git merge feature/add-header
ãããããã®çµæãtest_resource.txt ãã¡ã€ã«å
ã§ç«¶åãçºçããŸãã

- master ãã©ã³ãã®ãã®è¡ã«å ããããå€æŽã¯ãã<<<<<<< HEADããšã=======ãã®éã«ãããŸãã
- feature/add-header ãã©ã³ãå ã®å€æŽã¯ãã======= ãš ">>>>>>> feature/add-headerãã®éã«ãããŸãã

git status

git add *.txt

git commit

ãªã¢ãŒããªããžããªã®æäœ
æåŸã®ã¹ãããã§ã¯ããªã¢ãŒã ãªããžããªãæäœããããã«å¿ èŠãªã³ãã³ããããã«ããã€ãç解ããŸããå ã»ã©ãè¿°ã¹ãããã«ããªã¢ãŒã ãªããžããªã¯ããªããžããªãä¿åãããããããã¯ããŒã³ãäœæã§ããå Žæã§ãããªã¢ãŒããªããžããªã«ã¯ã©ã®ãããªçš®é¡ããããŸãã? äŸ:-
GitHub ã¯ããªããžããªãšå ±åéçºã®ããã®æ倧ã®ã¹ãã¬ãŒãž ãã©ãããã©ãŒã ã§ãã以åã®èšäºã§ã説æããŸãããGitHub
ã§ãã©ããŒããŠãã ãããç§ã¯ä»äºã®ããã«å匷ããŠããåéã§èªåã®äœåãããã§æ«é²ããããšããããããŸãã -
GitLab ã¯ããªãŒãã³ ãœãŒã¹ã䜿çšããDevOpsã©ã€ããµã€ã¯ã«ã®ããã® Web ããŒã¹ã®ããŒã«ã§ããããã¯ãç¬èªã® Wikiããã°è¿œè·¡ã·ã¹ãã ãCI/CD ãã€ãã©ã€ã³ããã®ä»ã®æ©èœãåããã³ãŒã ãªããžããªã管çããããã®GitããŒã¹ã®ã·ã¹ãã ã§ãã Microsoft ã GitHub ãè²·åãããšãããã¥ãŒã¹ã®åŸãäžéšã®éçºè ã¯ãããžã§ã¯ãã GitLab ã«è€è£œããŸããã
-
BitBucket ã¯ãMercurial ããã³ Git ããŒãžã§ã³ç®¡çã·ã¹ãã ã«åºã¥ãããããžã§ã¯ã ãã¹ãã£ã³ã°ããã³å ±åéçºã®ããã® Web ãµãŒãã¹ã§ãããã€ãŠã¯ãç¡æã®ãã©ã€ããŒã ãªããžããªãæäŸãããšããç¹ã§ãGitHub ããã倧ããªå©ç¹ããããŸãããæšå¹ŽãGitHub ããã®æ©èœã誰ã§ãç¡æã§å°å ¥ããŸããã
-
çã âŠ
git clone https://github.com/romankh3/git-demo
ããã§ããããžã§ã¯ãã®å®å
šãªããŒã«ã« ã³ããŒãäœæãããŸããããããžã§ã¯ãã®ããŒã«ã« ã³ããŒãææ°ã§ããããšã確èªããã«ã¯ã次ã®ããã«èšè¿°ããŠãããžã§ã¯ãããã«ããå¿
èŠããããŸãã
git pull


git add test_resource.txt
git commit -m "prepared txt for pushing"
ããããªã¢ãŒã ãªããžããªã«ããã·ã¥ããã³ãã³ãã¯æ¬¡ã®ãšããã§ãã
git push

䟿å©ãªãªã³ã¯
- å ¬åŒGit ããã¥ã¡ã³ããåèãšããŠããããããŸãã
GO TO FULL VERSION