Git ( Version Control System )
Git - Version Control System ์ค ํ ์์คํ ์ด๋ค.
report.xls โ report_final_real_final.xls ์ด๋ ๊ฒ ํด์ผํ๋ ๊ฒ
Version Management not by changing the file name
- Backup 2. Recovery 3. Collaboration
Version Control Systems โ CVS , SVN , GIT ๊ฐ ์๋ค.
Git is incredibly complex โ ๋ฏฟ์ด์ง์ง์์๋งํผ ๋ณต์กํ๋ค.
๋ฒ์ ์ปจํธ๋กค ์์คํ โ dropbox, google Drive ๊ฐ์ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๊ฒ๋ค์ ๋ฐํ์ผ๋ก ํ๊ธฐ
์์ ์ด ์ด๋ ์ํฉ์ด๋์ ๋ฐ๋ผ git, google Drive๋ฅผ ์ฌ์ฉํ๊ธฐ
- 1. Clone , 2. init
git init
ls -al : ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ด๋ค ๊ฒ์ด ์๋์ง ๋ณด์ฌ์ฃผ๋ ค๋ ๊ฒ
cat f1.txt : ํ๋ฉด txtํ์ผ์ ๋ด์ฉ์ด ๋ณด์ฌ์ง๋ค.
- ์ง๊ธ ์์ฑํ f1.txt ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋๊ณ ์๋ ๋๋ ํ ๋ฆฌ์ธ gitfth ์์๋ ์กด์ฌํ์ง๋ง
์ฐ๋ฆฌ๊ฐ ์ด ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ํด๋ผ๊ณ ์๊ธฐํ๊ธฐ ์ ๊น์ง๋ ๊น์ ์๋ฅผ ๋ฌด์ํฉ๋๋ค.
git add f1.txt
- git add ๋ฅผ ํ๋ฉด ์๊น์๋ ๋ค๋ฅด๊ฒ status์ git์ด new file์ด๋ผ๊ณ ์ธ์ํ๋ค.
git config --global user.name ๋๋ค์
git config --global user.email ์ด๋ฉ์ผ
git add์ ๋ค์ํ ์ต์
-
git add. ํ์ฌ ๋๋ ํ ๋ฆฌ ์ถ๊ฐ
-
git add -u ์์ ๋ ๋ถ๋ถ ์ถ๊ฐ
-
git add -A ํด๋ ์๋ ๋ชจ๋ ํ์ผ ์ถ๊ฐ
-
git add -i ํ์ผ์ ์ถ๊ฐํ ๋ธ ๋ํ์์ผ๋ก ์ถ๊ฐํ๊ธฐ
-
git add * ๋ชจ๋ ํ์ผ์ staged ์ํ๋ก ๋ง๋ฌ -> .gitigonore ๋ฌด์ํ๊ณ ์ฌ๋ผ๊ฐ์๋ ์์
-
git add -p ์์ ๋๊ฑฐ ํ์ธ ํ ์ถ๊ฐํ๊ธฐ
-
๋ค๋ฅธ ์ฌ๋์ด ๋ดค์๋ ๋๊ฐ ์์ ํ๋์ง ์ ์ ์๋ ๊ฒ์ผ๋ก ๋์ ๋๋ค์๊ณผ ์ด๋ฉ์ผ์ ๋ฃ์ผ๋ฉด ๋๋ค. ( ์ด๊ฑด ๋ฑ ํ๋ฒ๋ง ํ๋ฉด๋๋ค. )
- ์ด๋ ๊ฒ ํ๋ฉด ์ ๋ ๊ฒ
- ๋ณดํต git commit -m "๋ฉ์์ง" ์ด๋ ๊ฒ ํ๋ค.
- -a : add ์ ๊ฐ์ด ํ๋ ๋ช ๋ น์ด
- -am : add ๋ช ๋ น์ด์ m๋ฅผ ํ ์ ์๋ ๋ช ๋ น์ด
- git commit โhelp ๋ก ๋ค์ํ ๊ฒ์ ์ ์ ์๋ค.
log : ๋ก๊ทธ๋ฅผ ํ์ธํ๋ฉด commit ๋ฑ ๋ด๊ฐ ์ง๊ธ๊น์ง ํ๋ commit ๋ค์ ๋ณด์ฌ์ง๋๋ค.
- git diff๋ฅผ ํตํด ๋ด๊ฐ ํ์ฌ ์ด๋ค์์ ์ ํ๋์ง ์ โ ํ๋ฅผ ์ ์ ์์ต๋๋ค.
- commit๋ฅผ ํ๊ธฐ ์ ๋ด๊ฐ ํ ์์ ์ด ์๋๋์ง ์๋๋์ง๋ฅผ ํ์ธํ ์ ์๋ ๋ง์ง๋ง ๊ธฐํ! ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- reset : commit ๋ฅผ ์ง์ฐ๊ณ ๋ค์ํ๋ ๋ช ๋ น์ด ( ๋์ค์ soft๋ฅผ ๋ฐฐ์ด๋ค. hard๋ ์กฐ๊ธ ์ํํ๋ค๋ ๊ฒ)
revert : commit ๋ฅผ ์ง์ฐ๊ณ ๋ค์ํ๋ ๋ช ๋ น์ด
- ์ํ์ฝ๋ฉ์์ ๋์จ ์ฌ๋๋ค์ด ์์ฃผ ๊ฒ์ํ๋ git ๋ช ๋ น์ด๋ค (์ค์๋ ์์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค. )
report.xsl โ report1.xsl โ report2.xsl ์์ผ๋ก ์์ ๋๋ ํ์ผ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์.
์ด ํ์ผ์ ์ผ๋ถ ์์ ํ์ฌ client์๊ฒ ์ค๋ค๊ณ ์๊ฐํ์.
report2.xsl โ report2_client.xsl โ report_client2.xsl โโโ>
reposrt5.xsl โ report6.xsl
โ report3.xsl โ reporst4.xsl โโโ >
- git branch : ๋ธ๋์น๋ฅผ ๋ง๋๋ ๋ช ๋ น์ด
- git checkout exp ๋ ํ์ฌ ๋ธ๋์น์ธ master๋ฅผ ์ฒดํฌ์์ํ๊ณ exp๋ก ํ๊ฒ ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- git log โbraches โdecorate๋ ๋ชจ๋ branch git log๋ณ๋ก ์ต์ commit ์ด ๋ณด์ฌ์ง๋ค.
- โ graph๋ฅผ ํตํด 5์ 3,4๋ 2์ด๋ผ๋ ๊ณตํต์์ ๋์จ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- โ oneline ๋ฅผ ํ๋ฉด ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ๋ณผ ์ ์์ต๋๋ค.
- log ์ exp๋ฅผ ๋น๊ตํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- log์๋ ์๊ณ exp์๋ ์๋ ๊ฒ์ ๋ณด์ฌ์ค ! (๋ง์ฝ git log exp..master๋ฅผ ํ๋ฉด exp์๋ ์๊ณ master์๋ ์๋ ๊ฒ์ ์๋ ค์ค๋ค. )
- Fast-forward - ๋น ๋ฅธ๊ฐ๊ธฐ ์ merge๋ฅผ ํด๋ master๊ฐ ๊ฐ๋ฅดํค๋ ์ปค๋ฐ์ด ๋๊ตฌ์ธ์ง๋ฅผ ๋ฐ๊พธ๋ ๊ฒ
-
git stash๋ฅผ ํตํด stash๋ฅผ ์งํํ ์ ์๋ค. โ ํด๋น f1.txt๋ ์์ ํ๊ธฐ ์ (a)
์ผ๋ก ๋์ด์๋ค.
- git stash apply๋ฅผ ํ๋ฉด ์์ ํ๋ ๋ด์ฉ (a b) ๊ฐ ์๋ค.
- stash๋ ๋ช ์์ ์ผ๋ก ์ญ์ ํ์ง ์๋ ํ ์ด์์๋ค. (git stash list ๋ก ์ ์ ์์)
- head๋ refs/heads/master๋ฅผ ๊ฐ๋ฅดํค๊ณ masterํ์ผ์ ์ ํ์๋ ์ปค๋ฐ objectid๊ฐ์ ํตํด ๊ฐ์ฅ ์ต์ ์ปค๋ฐ์ด ๋ญ์ง ์์๋ผ ์ ์๋ค! ๊ทธ ์ ํ์ผ๋ค์ parent๋ฅผ ํตํด ! ์ ์ ์๋ค.
- ๊ฐ์ ํ์ผ์๋ ์์ ํ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค๋ฉด merge๋ฅผ ํ์๋์ ์ถฉ๋๋์ง ์๋๋ค!
- ํ์ง๋ง, ๊ฐ์ ํ์ผ์์ ์์ ํ ๋ถ๋ถ์ด ๊ฐ๋ค๋ฉด merge๋ฅผ ํ์๋ ์ถฉ๋๋๋ค.
- ์ถฉ๋๋ฌ์ ๋์ ํด๊ฒฐํ๋ ๋ฒ =======์ด๊ฒ ๊ตฌ๋ถ์๋ค !
๐ - ์ , ์ถฉ๋๋ฌ์ ๋์ โ ํด๊ฒฐํ๋ ๋ฒ์ ์ฐ์ต์ ๋ง์ด ํด๋ด์ผํ ๊ฒ๊ฐ๋ค.
- HEAD๊ฐ ์ด์ 96~ ์ ๊ฐ๋ฅดํจ๋ค. (์ต์ ์ปค๋ฐ)
- reset ํ ๊ฒ์ ์ทจ์ํ๊ณ ์ถ๋ค๋ฉด git reset โhard ORIG_HEAD๋ฅผ ํ๋ฉด ๋จ gitstory๋ฅผ ๋ณด๋ฉด orig_head์๋ git reset ํ๊ธฐ ์ ์ต์ ์ปค๋ฐ์ด ๋จ์์์ต๋๋ค.
-
git reflog ๋ฅผ ํตํด ์ง๊ธ๊น์ง ํ๋ ๊ฐ๊ฐ์ ์ปค๋ฐ๋ค์ด ๊ธฐ๋ก๋์ด์์ต๋๋ค.
์ฌ๊ธฐ์ HEAD@{0} ~ {6}๊น์ง ์๋๋ฐ ์ด๊ฑธ ์ด์ฉํด์๋ ๋์๊ฐ ์ ์์ต๋๋ค.
- ๊ณตํต์ ์ธ ๋ด์ฉ์ด ์๋ค . (์ฃผ๋ก base๋ผ๊ณ ๋ถ๋ฅธ๋ค. )
- ์ํ์ฝ๋ฉ์์๋ kdiff3์ด๋ผ๋ ํด์ ์ฌ์ฉํ์ฌ ์ด๋ ๊ฒ ์ง์ ์์ ํ๊ณ ์ข ๋ฃํ๋ฉด ์๋์ผ๋ก merge๊ฐ ๋๋ค.
git init โbare
git push ๋ช ๋ น์ด !
- ์๊ฒฉ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค. ์ด ์ฃผ์๊ฐ ๊ธฐ์ตํ๊ธฐ ์ด๋ ค์ฐ๋ origin์ด๋ผ๋ ๋ณ๋ช ์ ๋ง๋ค๊ฑฐ๋ค. ๋ผ๋ ์๋ฏธ
- git remote ๋ก ํ์ธ ! -v๋ก ์ด๋ป๊ฒ ๋์๋์ง ํ์ธ !
๐
-
git_home ์ด ์๊ณ git_office๊ฐ ์๋ค๊ณ ์๊ฐํ์.
( office๋ ํ์ฌ์์ ์ฐ๋ ๊ฒ , home์ ๊ฐ์ธ pc โ ๊ฐ์ repository ๋ฅผ cloneํ ์ํ )
-
๋ง์ฝ home์์ push๋ฅผ ํ๋ฉด ๊ทธ ๋ค์๋ office์์๋ ์ ๋ ์์ ํ๋ ๊ฒ์ด ์์ผ๋ฏ๋ก pull์ ํด์ ๋ก๊ฒจ์ฐ๋ ๊ฒ์ ์๋ฏธ โ ๋ฐฑ์ ์ด ๋๋๊ฒ !
๐ ๐ซ
-
gitFlow์์๋ master์์ ๊ฐ๋ฐ์ด ์งํ๋์ง ์๊ณ develop์ด๋ผ๋ branch์์ ์งํ๋จ
-
๊ฐ๋ฐ์ ์ญํ๋ค๊ฐ ํน์ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํด์ผํ ๋์๋ feature๋ผ๋ ๋ธ๋์น๋ฅผ ๋ง๋ค์ด์ ๊ฐ๋ฐ์ ์งํํ๋ค.
-
๊ทธ ๋ค์ ๊ฐ๋ฐ์ ์๋ฃํ๋ฉด feature์ ์๋ ๋ธ๋์น๋ฅผ develop์ผ๋ก ๋ณํฉํฉ๋๋ค. ๋ฒ๊ทธ๋ develop์ผ๋ก ํด๋๊ฐ๋ค.
-
์์ ์ ๋ง๋ฌด๋ฆฌํ๊ณ ์ฌ์ฉ์๋ค์๊ฒ ๋ฐฐํฌํ ์์ ์ด ์จ๋ค. (์น๊ณผ ๊ฐ์ ์จ๋ผ์ธ์๋น์ค๋ผ๋ฉด ์๋ฒ์ ๋ฐ์ํ๋ ์์ ) โ ์ด ๋์ release๋ผ๋ ๋ธ๋์น๋ฅผ ๋ง๋ ๋ค.
-
release์์ ํ ๋ ๋ฒ๊ทธ๋ ๋ฌธ์์์ ์ release์์ ์์ ์ ํ๋ค๊ฐ ์กฐ๊ธ์ฉ ์กฐ๊ธ์ฉ develop ๋ธ๋์น์ ํํํ merge๋ฅผ ํจ
-
์ถฉ๋ถํ ์์ ์ด ์๋๊ณ ํ ์คํธ๋ ์๋๋ค๋ฉด ์ค์ ๋ก ์๋ฒ์ release๋ฅผ ํ๋ ๊ทธ ์๊ฐ์ master๋ก ๋ณํฉํ๋ค. ๊น์ tag๋ผ๋ ๊ธฐ๋ฅ์ ํตํด 1.0 ๋ฒ์ ์ release๋ master ๋ธ๋์น์ ์์ปค๋ฐ,,?์ด๋ค? ( ,,, ์์ปค๋ฐ์ ๋ญ๊น,,! โ ์ง๋ฌธํ๊ธฐ ) ๋ํ ์ด๊ฒ์ ๊ณ์ ์งํ๋์ด์ผ๋๊ธฐ ๋๋ฌธ์ develop์๋ merge๋ฅผ ํฉ๋๋ค.
๋ฒ์ธ : hoxfixes๋ผ๋ ๊ฒ์ ์๋น์ค๋ฅผ ์ด์ํ๋ค๋ณด๋ฉด ๊ธด๊ธํ๊ฒ ๋ฒ๊ทธ๊ฐ ๋ ์ ์๋ค. ์งง์์๊ฐ์ ์ฒ๋ฆฌํด์ผ๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ master ๋ธ๋์น๋ก merge๋ฅผ ํ๊ณ tag๋ก ๊ธฐ๋กํ๋ค. hoxfixes ๋ํ develop์๋ merge๋ฅผ ํ๋ค.
https://www.youtube.com/watch?v=_kxjzlH34xc&list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk&index=49
์ค์ตํ ๊ฒ
- ์ด๋ฐ์์ผ๋ก ํ๋ค .
๐
์์ง ๋ง์ด ๋ถ์กฑํ์ง๋ง git์ ์ ์ ํ์ฉํ๋ฉด ํ ์๋ก ์ข๋ ํจ์จ์ ์ธ ๊ฐ๋ฐ์ ํ ์ ์๋ค๋๊ฒ !
์์ฃผ์์ฃผ ๊ณต๋ถํ๋ ๊ฒ์ด ์ข์๊ฒ๊ฐ๋ค.
์ํ์ฝ๋ฉ ์ต๊ณ ใ
ใ
ใ
-
์ํ์ฝ๋ฉ (์ ํ๋ธ ์ํ์ฝ๋ฉ)
-
git ์ฐ๊ฒฐํ ๋ ์ ์ฉํ ๋ธ๋ก๊ทธ! :) https://mosei.tistory.com/entry/๊ธฐ์กด-ํ๋ก์ ํธ๋ฅผ-git-repository์-์ฐ๊ฒฐ-ํ๊ธฐ
-
git ๋ธ๋์น์ ๋ํ ์ ์ฉํ ๋ธ๋ก๊ทธ :) https://mosei.tistory.com/entry/%EA%B8%B0%EC%A1%B4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%A5%BC-git-repository%EC%97%90-%EC%97%B0%EA%B2%B0-%ED%95%98%EA%B8%B0ใ ใฑ