Git ๋ด๋น๋ฅผ ์ํ ๊ธฐ์ด ์ฌ์ฉ๋ฒ - ์์ํ๊ธฐ
์ด๋ฒ ํฌ์คํ
์์๋ ๋๋ ์ฐ๊ณ ๋๋ ์ฐ๊ณ ์ฐ๋ฆฌ ๋ชจ๋ ์ฐ๊ณ ์๋ Git
์ ๊ธฐ์ด์ ๋ํด์ ํฌ์คํ
ํ๋ ค๊ณ ํ๋ค. ํ์๋ Git์ ๋ํ๊ต ๋ ์ฒ์ ์ ํ๋๋ฐ ์ฒ์์๋ โ์ ์ด์ํ ํด๋ผ์ฐ๋์ ์์ค์ฝ๋๋ฅผ ์ฌ๋ ค๋๋๋คโ ์ ๋๋ก๋ง ์ดํดํ๊ณ ์ฌ์ฉํ๋ ๊ธฐ์ต์ด ๋๋ค. ํ์ง๋ง Git์ ๊ธฐ๋ฅ์ ๋จ์ํ ์ฝ๋ ๊ณต์ ์์ ๋๋์ง ์๋ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ
์ด๋ฏ๋ก Git์ ์ ์ฐ๋ฉด ์ค๋ฌด์์ ํผ์ณ์ง๋ ๋ค์ด๋๋ฏนํ ์ํฉ์ ์ ์ฐํ๊ฒ ๋์ฒํ ์๋ ์๋ค.
ํ์ง๋ง Git์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ด ํฌ์คํ
์์ ์ ๋ถ ๋ค๋ฃจ๊ธฐ์๋ ์ง๋ฉด์ด ๋ถ์กฑํ๋, ์ด๋ฒ์๋ Git์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ๋ช
๋ น์ด์ธ add
, commit
, push
, pull
, fetch
์ ๋ํ ์ค๋ช
๋ง ์งํํ๋๋ก ํ๊ฒ ๋ค.
Git์ ๋๊ฐ, ์ ๋ง๋ค์๋์?
Git์ 2005๋
๋ฆฌ๋์ค ํ ๋ฅด๋ฐ์ฆ
๊ฐ ์๊ธฐ๊ฐ ์ฐ๋ ค๊ณ ๋ง๋ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ด๋ค. ์ผ๋จ ์ด ๋ฆฌ๋์ค ํ ๋ฅด๋ฐ์ฆ
๋ผ๋ ํ๋๋ ํ๋ถํฐ๊ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๋ถ๋ถ ์๊ณ ์์ ์ ๋๋ก ์ ๋ช
ํ๋ค.
์์ค ๋งํ ๋ถ๋ค์ ๋ค ์์๊ฒ ์ง๋ง ์ด ํ์ ์คํ์์ค ์ปค๋์ธ ๋ฆฌ๋
์ค(Linux)
๋ฅผ ๋ง๋ ์ฌ๋์ด๋ค. ๋ฆฌ๋
์ค ์ปค๋๋ก ๋ง๋ ์ ๋ช
ํ ์ด์์ฒด์ ๋ ๋ฐ๋น์ ๊ณ์ด์ ์ฐ๋ถํฌ(Ubuntu)
, ๋ ๋ํ ๊ณ์ด์ ์ผํธOS(CentOS)
๋ฑ์ด ์๋ค. ์ด ์ด์์ฒด์ ๋ค์ ์๋ฒ์์๋ ๋ง์ด ์ฌ์ฉ๋๊ณ , ํฐ๋ฏธ๋์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ ํผ์คํด์ ๊ฐ๋ฐ ์นํ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๋ถ๋ถ ์๊ณ ์๋ ์ด์์ฒด์ ์ด๋ค. ์ฐธ๊ณ ๋ก ์๋๋ก์ด๋ OS
๋ ๋ฆฌ๋
์ค ์ปค๋์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ ์ด์์ฒด์ ๋ค.
๋ญ ์ด์จ๋ ์ด ํ์ ์ด ์ชฝ ์ ๊ณ์์๋ ์๋นํ ์ ๋ช ํ๋ฐ, ๋ญ ํ๋ก๊ทธ๋๋ฐ์ ์ํ๊ฑฐ๋ ๋ฆฌ๋ ์ค ์ปค๋ ๋ง๋ ๊ฑธ๋ก๋ ์ ๋ช ํ์ง๋ง ์ด๋ฐ ๊ฑธ๋ก ๋ ์ ๋ช ํ๋ค.
์ด๊ฒ ๋๋ต 2012๋ ์ฏค์ธ๋ฐ, ์ด๋ค ํฌ๋ผ ์ฐ์ค์์ ์ค์ ๋ก ์ด๋ ๊ฒ ์๋น๋์ ์ฟ๋จน์ผ๋ผ๊ณ ํ๋ค. ๋น์์ ์๋น๋์ ์ตํฐ๋จธ์ค ์นฉ์ ์ฌ์ฉํ๋ ์ปดํจํฐ์์ ๋ฆฌ๋ ์ค๋ก ๋ง๋ OS๊ฐ ์ ๋๋ก ์๊ตด๋ฌ๊ฐ๋ ์ด์๊ฐ ์์๋๋ฐ, ์๋น๋์๊ฐ ์ง์ ์ฌ์ฐ๊ถ์ ์ด์ ๋ก ์คํ์์ค ๋๋ผ์ด๋ฒ๋ฅผ ๊ณต๊ฐ๋ฅผ ์ํ์๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ ์ค์ ์ค์น๊ฐ ํ๋ค์๋ ๊ฒ์ด๋ค. ๋น์์ ๋ํ๋ ๋๋ต ์ด๋ฌ๋ค.
[์ฒญ์ค]
์ ๋โฆ ์๋น๋์ ์ตํฐ๋จธ์ค ์นฉ ์ฐ๋ ๋ ธํธ๋ถ์ ๋ฆฌ๋ ์ค ๊น๋๊ฒ ๋๋ฌด ํ๋ค์ด์ใ ใ ์ข์ ๋ฐฉ๋ฒ ์์๊น์?[๋ฆฌ๋์ค]
โฆ
๋ ์ฐ๋ฆฌ๊ฐ ํ๋์จ์ด ์ ์กฐ์ ์ฒด๋ค๊ณผ ๊ฒช์๋ ์ต์ ์ ๋ฌธ์ ์ค ํ๋๊ฐ ์๋น๋์๋ผ๋ ๊ฒ์ ์ด๋ ๊ฒ ๊ณต๊ฐ์ ์ผ๋ก ์ง์ ํ ์ ์์ด์ ๊ธฐ์๋ค์! ์ด๊ฑด ์กฐ๊ธ ์ฌํ ์ผ์ธ๋ฐ, ์๋น๋์๋ ์๋๋ก์ด๋ ์์ฅ์ ๋ง์ ์นฉ์ ํ๊ณ ์์ง๋ง ์ด ํ์ฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฒฝํํ ํ์ฌ ์ค ์ง์ง ์ต์ ์ ๋๋ค.๊ทธ๋ฌ๋๊น ์๋น๋์โฆ ์ฟ์ด๋ ๋จน์ด๋ผ
๋ฆฌ๋์ค๋ ์ด๋ฐ ํ์ด๋ค. ์ฐธ๊ณ ๋ก ๋ฆฌ๋ ์ค ์ปค๋์ด ์คํ์์ค๋ผ๊ณ ํจ๋ถ๋ก ์ปค๋ฐํ๋ค๊ฐ๋ ์ด ํํํ ์๋จน๊ณ ํํ๊ฐ ์ฌ ์๋ ์์ผ๋ ๋ง์ ๋จ๋จํ ๋จน์. ์ด ํ์ด ๋ฐ๋ก ์ด ์ ๊ณ์ ๊ณ ๋ ๋จ์ง๋ค.
๊ทผ๋ฐ ์ ์ด ํ์ด Git์ ๋ง๋ค๊ฒ ๋์๋?
๋ฆฌ๋์ค๋ ๋ฆฌ๋
์ค ์ปค๋์ ๋ง๋ค ๋น์์ BitKeeper
๋ผ๋ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ์ฌ์ฉํ๋๋ฐ, ์ด Bitkeeper๋ผ๋ ์๋น์ค๋ ์๋ ์ ๋ฃ์์ง๋ง ๋ฆฌ๋
์ค ์ปค๋ฎค๋ํฐ์๋ ๋ฌด๋ฃ๋ก ์ ๊ณตํด์ฃผ๊ณ ์์๋ค. ๊ทผ๋ฐ ์ด ์ปค๋ฎค๋ํฐ์ ๊ฐ๋ฐ์ ํ๋ช
์ด BitKeeper์ ํต์ ํ๋กํ ์ฝ์ ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋งํด์ ํดํนํ๋ ์ฌ๊ฑด์ด ๋ฐ์ํ๊ณ , Bitkeeper๋ ๋ฌด๋ฃ๋ก ๋ฆฌ๋
์ค ์ปค๋ฎค๋ํฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์ฒ ํํ ๊ฒ์ด๋ค.
๊ทผ๋ฐ ์ด๊ฑธ ์ฐ์ง ๋ง๋ผ๊ณ ๋ง์ ๊ฒ ์๋๋ผ ๊ทธ๋ฅ ๋ฌด๋ฃ์์ ์ ๋ฃ๋ก ๋๋ฆฐ ๊ฑฐ๋ค. ๊ทผ๋ฐ ์ด ํ์ด ๋๋ด๊ธฐ๋ ์ซ์๋์ง ๊ทธ๋ฅ ์๊ธฐ๊ฐ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ 2์ฃผ ๋ง์ ๋๋ฑ! ๋ง๋ค์๋๋ฐ ๊ทธ๊ฒ ๋ฐ๋ก Git
์ด๋ค. (2๋ฌ ์๋๊ณ 2์ฃผ ๋ง๋คโฆ)
๋ฆฌ๋์ค๊ฐ Git
์ ์ฒ์ ์ปค๋ฐํ๋ ๋ด์ฉ์ Github์ Git ๋ฏธ๋ฌ ์ ์ฅ์์์ ํ์ธํด๋ณผ ์ ์๋๋ฐ ์ฌ๊ธฐ์๋ ๋ฆฌ๋์ค ํ์ ์ฑ๊ฒฉ์ด ๋๋ฌ๋๋ค.
GIT - the stupid content tracker
โgitโ can mean anything, depending on your mood.
- random three-letter combination that is pronounceable, and not
actually used by any common UNIX command. The fact that it is a mispronounciation of โgetโ may or may not be relevant.
- stupid. contemptible and despicable. simple. Take your pick from the
dictionary of slang.
- โglobal information trackerโ: youโre in a good mood, and it actually
works for you. Angels sing, and a light suddenly fills the room.
- โgoddamn idiotic truckload of sh*tโ: when it breaksLinus Torvalds git/git/README.md
์, ์ด๊ฒ ๋ฆฌ๋์ค๊ฐ ํ ์ฒซ๋ฒ์งธ ์ปค๋ฐ์ README.md
ํ์ผ์ ์ผ๋ถ๋ฅผ ๊ฐ์ ธ์จ ๊ฒ์ธ๋ฐ, Git
์ ๊ทธ๋ฅ ์๋ฌด ์๋ฏธ ์๋ ์ธ๊ธ์ ์ํ๋ฒณ์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฅ ์ ๋์ค ๋ช
๋ น์ด ์ค์ git
์ด๋ผ๋ ๋ช
๋ น์ด๊ฐ ์์ด์ ์ ํ๋ค๊ณ ํ๋ค. ๊ธฐ๋ถ์ด ์ข์ผ๋ฉด โglobal information trackerโ๋ผ๊ณ ํ๊ณ ๊ธฐ๋ถ์ด ๊ตฌ๋ฆฌ๋ฉด โgoddamn idiotic truckload of sh*tโ์ด๋ผ๊ณ ํ๋๋ค. (์ง์ง ์ด ์ธ์ ์ฟจํจ์ด ์๋๋ค.)
์ ๋ฆฌํ์๋ฉด Git
์ ํ๋๋์ ์ด๋ค ์ฒ์ฌ ํ์ด ์ฐ๋ ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๊ฐ ๊ฐ์๊ธฐ ์ ๋ฃ๊ฐ ๋์ 2์ฃผ๋ง์ ๋ง๋ค์ด๋ธ ์์คํ
์ด๊ณ , ์ง๊ธ์ ์ ์ธ๊ณ์ ์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ด๋ค.
๊ธฐ์ด์ ์ธ ๊ฐ๋ ์์๋ณด๊ธฐ
Git์ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์๋ ์์ค๋ฅผ ์์ ํ๋ ค๋ฉด ๋ก์ปฌ ํ๊ฒฝ์ผ๋ก ์์ค๋ฅผ ํด๋ก (Clone)
ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค. ๋ง ๊ทธ๋๋ก ๋ชจ๋ ์์ค๋ฅผ ๋ณต์ฌํ์ฌ ์ฌ์ฉ์์ ์ปดํจํฐ๋ก ๋ฐ์์ค๋ ๊ฒ์ด๋ค.
์ดํ Git์ ๋ก์ปฌ ํ๊ฒฝ์ ํ์ผ์ ์ถ์ ํ๊ณ ์๋ค๊ฐ ์ฌ์ฉ์๊ฐ ์์ค๋ฅผ ์์ ํ๋ฉด ๊ทธ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋ค. ๊ทธ ํ ์ฌ์ฉ์๋ ์์ ์ด ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ณ ์ถ์ ํ์ผ์ด๋ ์์ค ์ฝ๋์ ๋ผ์ธ์ ๊ณ ๋ฅธ ๋ค ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ ๋ก๋ํ๋ค.
์ ์ผ๋จ Git์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
์ ์ด๊ฒ ๋์ด๋ค. ๋ฆฌ๋ชจํธ ์๋ฒ์ ์๋ ํ์ผ์ ๋ด ์ปดํจํฐ๋ก ๋ณต๋ถํ ๋ค์ ์์ ํด์ ๋ค์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ก ์
๋ฐ์ดํธํ๋ค๋ ๊ฒ. ์ด๋ ์ฌ์ฉ์๊ฐ ์์ ์ด ๋ณ๊ฒฝํ ๋ก์ปฌ์ ์์ค๋ฅผ ์๋ฒ์ ์์ค์ ์
๋ก๋ํ๋, ์ฆ ์๋ฒ๋ก ๋ฐ์ด์ฌ๋ฆฌ๋ ํ์๋ฅผ Push
๋ผ๊ณ ๋ถ๋ฅด๊ณ ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์์ค๋ฅผ ์์ ์ ํด๋ผ์ด์ธํธ๋ก ๊ฐ์ ธ์ค๋ ํ์๋ฅผ Pull
๋๋ Fetch
๋ผ๊ณ ํ๋ ๊ฒ์ด๋ค. ์ฝ์ง ์์๊ฐ?
ํ์ง๋ง ์ฒ์ Git์ ์ ํ๋ฉด ํ์์ ์ ํด๋ณด์ง ๋ชปํ๋ remote
, origin
, repository
์ ๊ฐ์ ์ฉ์ด๋ค์ด ํ์ด ๋์ค๊ธฐ ๋๋ฌธ์ ๋นํฉํ ์ ์๋ค. ๊ทธ๋ผ ์ด ์ฉ์ด๋ค์ด ๋ฌด์์ ๋ปํ๋์ง๋ถํฐ ๊ฐ๋จํ๊ฒ ์์๋ณด์.
Remote / Origin
์ฐ์ Remote
๋ ๋ง ๊ทธ๋๋ก ๋ฆฌ๋ชจํธ ์๋ฒ ์์ฒด๋ฅผ ์๋ฏธํ๋ค. ์ด ๋ฆฌ๋ชจํธ ์๋ฒ๋ผ๋ ๊ฐ๋
์ด ์ ์ดํด๊ฐ ์๋์๋ ๋ถ์ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ
๋ N๋๋ผ์ด๋ธ
์ ๊ฐ์ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ์ฌ๋ฆฌ์๋ฉด ๋๋ค. ์ ์ธ๊ณ ์ด๋๊ฐ์ ์๋ ์๋ฒ์ ์ฐ๋ฆฌ์ ์์ค๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด๋ค.
์ด๋ ์ด ์๋ฒ๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ํ์ ์ธ ์
์ฒด๊ฐ Github
, Bitbucket
, GitLab
๊ณผ ๊ฐ์ ํ์ฌ๋ค์ด๋ค. ์ด ํ์ฌ๋ค์ด Git
์ ๋ง๋ ๊ฒ ์๋๋ผ Git
์ด๋ผ๋ ์์คํ
์ ํ์ํ ๋ฆฌ๋ชจํธ ์๋ฒ์ Git์ ์ข ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ ๊ฒ์ด๋ค.
Git์ ์ฌ์ฉํ ๋๋ ๋ด๊ฐ ์ด๋ค ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ณ๊ฒฝ ์ฌํญ์ ์
๋ก๋ ํ ๊ฒ์ธ์ง ์ ํด์ผํ๋๋ฐ, ๋ฐ๋์ ํ๋์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ด๋ฆ์ ์ ํด์ค์ผํ๋ค. ์ด๋ ์ฃผ๋ก ์ฌ์ฉํ๋ ๊ด๋ก์ ์ธ ์ด๋ฆ์ด ๋ฐ๋ก Origin
์ด๋ค.
๋ณดํต์ ํ ๊ฐ์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ง ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค์์ด๊ธฐ ๋๋ฌธ์ ๋ง์ ์ฌ๋๋ค์ด Remote
์ Origin
์ ํผ์ฉํด์ ๋ถ๋ฅด๊ณค ํ๋ค.
Repository
๋ ํ์งํ ๋ฆฌ(Repository, Repo)
๋ ์ ์ฅ์๋ผ๋ ๋ป์ผ๋ก, ๋ฆฌ๋ชจํธ ์๋ฒ ๋ด์์ ๊ตฌ๋ถ๋๋ ํ๋ก์ ํธ ๋จ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๋ฅผ ์ฌ์ฉํ ๋๋ ํ๋์ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ์ ๋ค ๋๋ ค๋ฃ์ง์๊ณ ๋ช ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ฉ๋์ ๋ฐ๋ผ ํ์ผ์ ๋๋ ์ ๊ตฌ๋ถํ๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ ๊ฐ์ ๋ ํ์งํ ๋ฆฌ๋ ํ๋์ ํ๋ก์ ํธ๋ฅผ ์๋ฏธํ์ง๋ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ ๋ ํ์งํ ๋ฆฌ ํ๋์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๊ธฐ๋ ํ๋ค.
https://github.com/user/repository.git
https://user@bitbucket.org/group-name/repository.git
๋ ํ์งํ ๋ฆฌ๋ฅผ ํด๋ก ๋ฐ์ ๋๋ ํด๋น ๋ ํ์งํ ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ URL์ด ํ์ํ๋ฐ, ๋ ํ์งํ ๋ฆฌ์ ์ด๋ฆ์ URL์ ๋งจ ๋ง์ง๋ง์ .git
ํ์ฅ์๋ฅผ ๊ฐ์ง๋ ๋ฐฉ์์ผ๋ก ํํ๋๋ค.
Branch
๋ธ๋์น
๋ ์ผ์ข
์ ๋
๋ฆฝ๋ ์์
์ ์งํํ๊ธฐ ์ํ ์์
๊ณต๊ฐ์ ๊ฐ๋
์ด๋ค. ๋งจ ์ฒ์ Git์ ์ด๊ธฐํํ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก master
๋ผ๋ ์ด๋ฆ์ ๋ธ๋์น๊ฐ ํ๋ ์์ฑ๋๋ค. ๊ทธ ํ ๊ฐ๋ฐํ๋ ๊ธฐ๋ฅ ๋๋ ๋ฒ๊ทธ ํฝ์ค์ ๋ฐ๋ผ์ ๋ธ๋์น๋ฅผ ์๋ก ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ์์
ํ ํ์ ๋์ค์ ๋ค์ master
๋ก ํฉ์น๋ ๊ฒ์ด๋ค.
์ด ๋ธ๋์น ๊ฐ๋ ์ Git์ ์ต์ํ์ง ์์ ๋ถ๋ค์๊ฒ ์ ๊น ์ค๋ช ํ๊ณ ๋์ด๊ฐ๊ธฐ์๋ ์ง๊ด์ ์ผ๋ก ์ดํด๊ฐ ์ ์๋ ์ ์๋ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ ์ถํ ๋ค๋ฅธ ํฌ์คํ ์์ ๋ค์ ์ค๋ช ํ๊ฒ ๋ค. ์ผ๋จ ์ง๊ธ์ ์ด 3๊ฐ์ง ์ ๋๋ง ๊ธฐ์ตํด๋์.
- Git์ ์ด๊ธฐํํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก
master
๋ธ๋์น๊ฐ ์๊ธด๋ค. ์ด ์น๊ตฌ๊ฐ ๋ฉ์ธ ๋ธ๋์น ์ญํ ์ ํ๋ค.- ๋ธ๋์น๋ ์ด๋ค ๋ธ๋์น์์ ๋ถ๋ฆฌ์ํค๋ ๊ฒ์ด๊ณ , ๋ถ๋ฆฌ๋ ๋ธ๋์น๋ ๋ถ๋ฆฌ๋ ๋น์์ ๋ถ๋ชจ ๋ธ๋์น ์ํ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ๋ฐ์๋ ๊ฐ๊ฐ์ ๋ธ๋์น์์ ๊ฐ๋ฐ์ ์งํํ ๋ค ๋์ค์ ๋ค์
master
๋ธ๋์น๋ก ๋ณ๊ฒฝ ์ฌํญ์ ํฉ์น๋ค.
ํ์ ๋ช ๋ น์ด๋ค์ ์์๋ณด์
๋ง์ฝ ์ฌ๋ฌ๋ถ์ด ํผ์์๋ง ํ๋ก์ ํธ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ค๋ฉด ๋จ์ํ ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ ํ์งํ ๋ฆฌ์์ ์์ค๋ฅผ ๋ฐ์์์ ๋ณ๊ฒฝํ ํ ๋ค์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ก ์ ๋ก๋ํ๋ ๊ณผ์ ๋ง์ผ๋ก๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ฐ๋ ์ฌ์ค ์๋ฌด ๋ฌธ์ ๊ฐ ์๋ค.
ํ์ง๋ง Git์ ์ ์ด์ ํผ์์ ๊ฐ๋ฐํ๋ ์ํฉ๋ณด๋ค๋ ์ฌ๋ฟ์ด์ ํจ๊ป ์์ค๋ฅผ ์์ ํ๋ฉฐ ๊ฐ๋ฐํ๋ ํ์ ์ํฉ์ ์์ ํ๊ณ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ํ์ ์์ ๋ฐ์ํ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๊ณค๋ํ ์ํฉ๋ค์ ํํํ๊ธฐ ์ํ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
Git์ ๊ธฐ๋ณธ์ ์ผ๋ก CLI(Command Line Tools)
์ ํตํด ์ฌ์ฉํ๊ณ commit
, fetch
, branch
์ ๊ฐ์ ์ฌ๋ฌ๊ฐ์ง ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
๊ทธ๋ผ ์ด๋ฒ์๋ Git์ ์ฌ์ฉํ์ฌ ๋ฒ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ผ ํ๋ ๋ช ๊ฐ์ง ๋ช ๋ น์ด๋ฅผ ํ๋ฒ ์ดํด๋ณด์.
๋ฆฌ๋ชจํธ ์๋ฒ์ ์ฐ๋ํ๊ธฐ
clone
clone
์ ๋ง ๊ทธ๋๋ก ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ ํ์งํ ๋ฆฌ์์ ํด๋ผ์ด์ธํธ๋ก ํ์ผ์ ๋ณต๋ถํ๋ ํ์๋ฅผ ๋งํ๋ค. ์ด๋ ํด๋ก ์ ์ํํ๊ธฐ ์ํด์๋ ์ด๋ค ๋ ํ์งํ ๋ฆฌ
์์ ํ์ผ์ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ฐ, ์ด ์ ๋ณด๋ ์์์ ์ค๋ช
ํ๋ฏ์ด URL๋ก ํํํ๋ค. HTTPS
ํ๋กํ ์ฝ์ด๋ SSH
ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์์ค๋ฅผ ํด๋ก ํ ์ ์๋๋ฐ, ๋ณดํต HTTPS
๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
๋ณดํต Github๊ณผ ๊ฐ์ ๋ฆฌ๋ชจํธ ์๋ฒ ์ ๊ณต์
์ฒด๋ค์ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํด๋ก ํ ์ ์๋๋ก ๋์ ์ ๋๋ ๋ฒํผ์ ๋ง๋ค์ด ๋๊ณ ํด๋น ๋ ํ์งํ ๋ฆฌ์ URL์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ฌ์ฉ์๋ ๋จ์ง ์ URL์ ๋ณต์ฌํ ๋ค์ Git์ clone
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๋ ํ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
$ cd ~/dev/evan # ์ํ๋ ์์
๋๋ ํ ๋ฆฌ๋ก ์ด๋
$ git clone https://github.com/evan-moon/test-repo.git
์ํ๋ ์์
๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ ๋ค clone
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ ํ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ๊ฒ๋๋ฉด ํ์ฌ ์์น์ ๋ ํ์งํ ๋ฆฌ ์ด๋ฆ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋๊ณ ๊ทธ ๋ด๋ถ์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์์ค๊ฐ ์ ๋ถ ๋ณต์ฌ๋๋ค. ์ ์์ ์ ๊ฒฝ์ฐ ~/dev/evan
๋๋ ํ ๋ฆฌ ๋ด๋ถ์ test-repo
๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋๊ณ ํด๋น ๋ ํ์งํ ๋ฆฌ์ ์์ค๊ฐ ๋ณต์ฌ๋ ๊ฒ์ด๋ค.
์ด์ ์ด ๋ณต์ฌ๋ ์์ค๋ฅผ ๋ง๋๋ก ์์ ํ๊ฑฐ๋ ํ๊ดดํด๋ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ ๋ก๋๋ง ํ์ง ์๋๋ค๋ฉด, ๊ฐ์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ฅผ ๋ณด๊ณ ์๋ ๋ค๋ฅธ ์ฌ๋์ด ์ํฅ์ ๋ฐ์ ์ผ์ ์ ๋ ์๊ธฐ ๋๋ฌธ์ ์์ฌํ๊ณ ๋ง๋๋ก ๋ง์ง์๊ฑฐ๋ ค๋ ๋๋ค.
pull
pull
๋ช
๋ น์ด๋ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ต์ ์์ค๋ฅผ ๊ฐ์ ธ์์ ๋ก์ปฌ ์์ค์ ๋ณํฉ(Merge)
ํด์ฃผ๋ ๋ช
๋ น์ด์ด๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ฒ์ ์์ค๋ฅผ ํด๋ก ํ ํ์ ๋ค๋ฅธ ์ฌ๋์ด ๋ฆฌ๋ชจํธ ์๋ฒ๋ฅผ ์ํ๋ฅผ ๊ฐฑ์ ํ๋๋ผ๋ ๋ฆฌ๋ชจํธ ์๋ฒ๊ฐ ์ฐ๋ฆฌ์๊ฒ ๊ทธ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์๋ ค์ฃผ์ง๋ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์๋ฒ์ ๋ฌธ์๋ฅผ ๋ ๋ ค์ผ ํ๋ ๊ฒ์ด๋ค.
๋ํ pull
์ ๋จ์ํ ๋ฆฌ๋ชจํธ ์๋ฒ์์ ๋ก์ปฌ๋ก ์์ค๋ฅผ ๊ฐ์ ธ์จ๋ค์ ๊ฐ๋
๋ณด๋ค๋ ๊ฐ์ ธ์์ ํฉ์น๋ค
์ ๊ฐ๋
์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋์น๋ผ๋ฆฌ๋ pull
์ ํตํด ์์ค๋ฅผ ํฉ์น ์ ์๋ค.
$ git pull # ํ์ฌ ๋ด ๋ก์ปฌ ๋ธ๋์น์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ๋ฆฌ๋ชจํธ ์๋ฒ ๋ธ๋์น๊ฐ ํ๊ฒ
$ git pull origin master # origin ๋ฆฌ๋ชจํธ ์๋ฒ์ master ๋ธ๋์น๊ฐ ํ๊ฒ
์คํ์์ค์ ๊ด์ฌ์ด ๋ง์ ๋ถ์ด๋ผ๋ฉด Pull Request
๋ผ๋ ๋จ์ด๋ฅผ ๋ค์ด๋ณด์์ ๊ฒ์ด๋ค. ์ด Pull Request
๋ โ๋ด๊ฐ ์์
ํ ๋ธ๋์น๋ฅผ ๊ฐ์ ธ๊ฐ์ ํฉ์ณ์ค~โ๋ผ๋ ์๋ฏธ์ด๋ค.
ํ์๋ ์ฒ์์ ์ด๊ฒ ์ Merge Request
๊ฐ ์๋๋ผ Pull Request
์ธ์ง ์ดํด๊ฐ ์ ์๊ฐ์๋๋ฐ, ๋์ค์ ์์ ์๊ฐํด๋ณด๋ ์ต์ข
์ ์ผ๋ก ๋ ๋ธ๋์น์ ์์ค๋ฅผ ํฉ์น๋ ํ์๋ฅผ ํ๋ ์ฃผ์ฒด๊ฐ ์์ฒญ์ ํ ์ฌ๋์ด ์๋๊ณ ์์ฒญ์ ๋ฐ์ ์ฌ๋์ด๊ธฐ ๋๋ฌธ์ ์์ฒญ์ ๋ฐ์ ์ฌ๋์ด ๋ธ๋์น๋ฅผ ๊ฐ์ ธ๊ฐ์ ํฉ์น๋ค๋ ๊ด์ ์์ ๋ณด๋ฉด ์ ์ ํ ๋ค์ด๋ฐ์ธ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ์๋ค.
fetch
fetch
๋ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ต์ ์ด๋ ฅ์ ๋ด ํด๋ผ์ด์ธํธ๋ก ๊ฐ์ ธ์ค๋ ๋ณํฉ์ ํ์ง ์๋ ๋ช
๋ น์ด์ด๋ค.
$ git fetch
fetch
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ฆฌ๋ชจํธ ์๋ฒ์ ์๋ก ์
๋ฐ์ดํธํ ๋ชจ๋ ๋ด์ญ์ ๋ฐ์์ฌ ์ ์๋ค. ์ด์ ๊ทธ ๋ด์ญ์ ๋ณด๊ณ ๋ด ๋ก์ปฌ์ ์๋ ๋ฒ์ ์ด ๋ฆฌ๋ชจํธ ์๋ฒ์ ์๋ ๋ฒ์ ๋ณด๋ค ์ด์ ๋ฒ์ ์ด๋ผ๋ฉด pull
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ด ์ปดํจํฐ์ ์์ค ์ฝ๋๋ฅผ ๊ฐฑ์ ํ๋ฉด ๋๋ค.
๊ทธ๋ผ ์ด ๋ช
๋ น์ด๊ฐ pull
์ ํ์ ํธํ์ด ์๋๊ฐ? ๋ผ๋ ์๊ฐ์ด ๋ค ์๋ ์๋๋ฐ, pull
๊ณผ fetch
๋ ์กฐ๊ธ ์ฉ๋๊ฐ ๋ค๋ฅด๊ธด ํ๋ค. pull
๊ฐ์ ๊ฒฝ์ฐ๋ ์ผ๋จ ๋ฌป์ง๋ ๋ฐ์ง์ง๋ ์๊ณ ๋ฐ๋ก ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ต์ ์์ค๋ฅผ ๊ฐ์ ธ์์ ๋ด ๋ก์ปฌ ์์ค์ ํฉ์ณ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ์ํํ๊ธด ํ๋ค. ๋ญ ์๋ฅผ ๋ค๋ฉด ์ง๊ธ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ต์ ์์ค๊ฐ ๋ฒ๊ทธ๊ฐ ์๋ ์ํ์ผ ์๋ ์์ง ์์๊ฐ?
๊ทธ๋์ ํ์๊ฐ์ ๊ฒฝ์ฐ ๋ณดํต ๋ก์ปฌ ์์ค์ ๋ฆฌ๋ชจํธ ์์ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฏธ๋ฆฌ ๋น๊ตํด๋ณด๊ณ ์ถ์ ๋ fetch
๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ fetch
๋ฅผ ์ ์ด์ฉํ๋ฉด ์ด๋ฐ ์์์ด๋ ๊ฐ๋ฅํ๋ค.
#!/bin/bash
git fetch --all -p; git branch -vv | grep ": gone]" | awk '{ print $1 }' | xargs -n 1 git branch -d
์ด ์์คํฌ๋ฆฝํธ๋ ํ์๊ฐ ์์ ์ ๋ง๋ค์ด ๋จ๋ ์น๊ตฌ์ด๋ค. fetch
๋ฅผ ํตํด ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ต์ ๋ด์ฉ์ ๋ฐ์์จ ๋ค, branch
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ๋ชจํธ ์๋ฒ์์๋ ์ญ์ ๋์์ง๋ง ๋ก์ปฌ์๋ ๋จ์์๋ ๋ธ๋์น๋ฅผ ์ฐพ์์ ์น ๋ค ์ง์์ฃผ๋ ์คํฌ๋ฆฝํธ์ด๋ค. ์ฐธ๊ณ ๋ก ๋ก์ปฌ์๋ ์์ง๋ง ๋ฆฌ๋ชจํธ์์ ์ญ์ ๋ ๋ธ๋์น๋ ๋ธ๋์น ์ด๋ฆ ๋ค์ : gone
์ด๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋ถ์ด์๊ธฐ ๋๋ฌธ์ ๊ตฌ๋ถ์ด ๊ฐ๋ฅํ๋ค.
$ git branch -vv
* master fa0cec5 [origin/master] ๋ง์คํฐ ๋ธ๋์น์์ค
test 1f3578f [origin/test: gone] ๋ฆฌ๋ชจํธ์์ ์ฃฝ์ ๋ธ๋์น
test2 fa0cec5 ๋ก์ปฌ์์ ๋ง๋ค์ด์ง๊ณ ๋ฆฌ๋ชจํธ์ ์
๋ฐ์ดํธ๋ ์๋ ๋ธ๋์น
fetch
๋ช
๋ น์ด์ branch
๋ช
๋ น์ด์ ํน์ฑ์ ์ ์ด์ฉํ๋ฉด ์ด๋ฐ ๊ฟ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค ์๋ ์๋ค.
๋ณ๊ฒฝ ์ฌํญ์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ ๋ฐ์ดํธํ๊ธฐ
์, ์ง๊ธ๊น์ง๋ ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ด์ฉ์ ๋ก์ปฌ๊ณผ ์ฐ๋ํ๋ ๋ช
๋ น์ด๋ฅผ ์ดํด๋ดค๋ค๋ฉด ์ด์ ๋ ๋ด ๋ก์ปฌ์์ ๋ณ๊ฒฝํ ์์ค๋ฅผ ๋ฆฌ๋ชจํธ ์๋ฒ๋ก ์
๋ก๋ํ๋ ๋ช
๋ น์ด๋ค์ ์ดํด๋ณผ ์ฐจ๋ก์ด๋ค. ํ์๋ ์ด ๊ณผ์ ์ ์ค๋ช
ํ ๋ ๋ณดํต ํ๋ฐฐ
๋ก ์๋ฅผ ์ฃผ๋ก ๋๋ ํธ์ด๊ธฐ ๋๋ฌธ์ ์ด ํฌ์คํ
์์๋ ํ๋ฐฐ๋ฅผ ํฌ์ฅํ๊ณ ๋ฐฐ์กํ๋ ๊ณผ์ ์ ๋น๋์ด์ ์ค๋ช
์ ์งํํ๊ฒ ๋ค.
add
์, ํํ๋ก์ด ์ค*๋๋ผ
์์ ์ค๊ณ ๊ฑฐ๋๋ฅผ ํ๋ค๊ณ ์๊ฐํด๋ณด์. ๋ฌผ๋ก ์ง์ ์๋ ๋ชจ๋ ๋ฌผ๊ฑด์ ๋ณด๋ด๋ ํ์๊ฐ์ ๋ถ๋ ๊ณ์๊ฒ ์ง๋ง ์ผ๋ฐ์ธ์ด๋ผ๋ฉด ๊ทธ๋ฌ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์๋๋ฐฉํํ
๋ฌผ๊ฑด์ ๋ณด๋ด๊ธฐ ์ ์ ์ด๋ค ๋ฌผ๊ฑด์ ๋ณด๋ผ ๊ฒ์ธ์ง ๋ถํฐ ์ ํด์ผํ๋ค. ์ด๋ add
๋ช
๋ น์ด๊ฐ ์ด๋ค ๋ฌผ๊ฑด๋ค์ ํฌ์ฅํ ๊ฒ์ธ์ง ๊ณ ๋ฅด๋ ๊ณผ์ ์ ๋ด๋นํ๋ค.
$ git add . # ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์คํ
์ด์ง์ ์ฌ๋ฆฐ๋ค
$ git add ./src/components # components ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ์คํ
์ด์ง์ ์ฌ๋ฆฐ๋ค
$ git add ./src/components/Test.vue # ํน์ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ๋ง ์คํ
์ด์ง์ ์ฌ๋ฆฐ๋ค
$ git add -p # ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ๋ํ๋ ์ดํด๋ณด๋ฉด์ ์คํ
์ด์ง์ ์ฌ๋ฆฐ๋ค
์ด๋ ์ ํ๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ์คํ
์ด์ง(Stage)
๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ๊ฒ ๋๋ค. ์ด๋ git add <๊ฒฝ๋ก>
๋ช
๋ น์ด๋ ํด๋น ๊ฒฝ๋ก ์์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ถ ์คํ
์ด์ง์ ์ฌ๋ฆฌ๊ฒ ๋๋๋ฐ, ์ด๊ฒ ์ ๋ถ์ํ๋ค ์ถ์ ์ฌ๋์ -p
์ต์
์ ์ค์ผ๋ก์จ ๋ณ๊ฒฝ ์ฌํญ์ ํ๋ํ๋ ํ์ธํ๋ฉด์ ์คํ
์ด์ง์ ์ฌ๋ฆด ์๋ ์๋ค.
์ด๋ ๊ฒ ์คํ
์ด์ง์ ๋ด๊ธด ๋ณ๊ฒฝ ์ฌํญ๋ค์ git status
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํด๋ณผ ์ ์๊ณ , status
๋ช
๋ น์ด์ ์ถ๊ฐ์ ์ผ๋ก -v
์ต์
์ ์ฌ์ฉํ๋ฉด ์ด๋ค ํ์ผ์ ์ด๋ค ๋ถ๋ถ์ด ๋ณ๊ฒฝ๋์๋์ง๋ ํจ๊ป ๋ณผ ์ ์๋ค.
$ git add ./soruce
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: source/_drafts/git-tutorial.md
commit
add
๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๋ณ๊ฒฝ์ฌํญ์ ์คํ
์ด์ง์ ์ฌ๋ ธ๋ค๋ฉด ์ด์ ์คํ
์ด์ง์ ์๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ํฌ์ฅํ ์ฐจ๋ก์ด๋ค. ์ด๋ ์ด ํฌ์ฅํ๋ ํ์๋ฅผ commit
์ด๋ผ๊ณ ํ๋ค. ์ปค๋ฐ์ Git์์ ์๋นํ ์ค์ํ ๋ถ๋ถ์ ์ฐจ์งํ๋ ํ์์ธ๋ฐ, ๋ฐ๋ก Git์ด ํ๋์ ์ปค๋ฐ์ ํ๋์ ๋ฒ์ ์ผ๋ก ์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํน์ ๋ฒ์ ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์
์ ๋ณ๊ฒฝ์ด๋ผ๋ ๊ธฐ์ค๋ ๋น์ฐํ ๋ฐ๋ก ์ด ์ปค๋ฐ์ด ๋๋ค.
$ git log --graph
* commit 20f1ea9 (HEAD -> master, origin/master, origin/HEAD)
| Author: Evan Moon <bboydart91@gmail.com>
|
| ํ์๊ฐ์
๊ธฐ๋ฅ ๊ฐ๋ฐ ๋!
|
* commit ca693fd
| Author: Evan Moon <bboydart91@gmail.com>
|
| ํ์๊ฐ์
๋น๋ฐ๋ฒํธ ์
๋ ฅ ํผ ์ถ๊ฐ
|
* commit f9b6e2d
| Author: Evan Moon <bboydart91@gmail.com>
|
| ํ์๊ฐ์
์ด๋ฉ์ผ ์
๋ ฅ ํผ ์ถ๊ฐ
|
์์ ๊ทธ๋ํ ์์์ ํ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ฌ ์ํ๋ ์ด๋ค ์ปค๋ฐ์ผ๊น?
๊ทธ๋ํ ์์์ HEAD
๊ฐ 20f1ea9 ํ์๊ฐ์
๊ธฐ๋ฅ ๊ฐ๋ฐ ๋!
์ปค๋ฐ์ ์์นํด ์์ผ๋ฏ๋ก ํ์ฌ ํ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ํ์๊ฐ์
๊ธฐ๋ฅ
๊น์ง ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ํ๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ํ๋ฅผ ์์ธํ ๋ณด๋ฉด ๊ฐ๊ฐ์ ์ปค๋ฐ๋ค์ 20f1ea9
๊ณผ ๊ฐ์ ๊ณ ์ ํ ํด์ฌ ๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด ํด์ฌ ๊ฐ์ ์ฌ์ฉํ์ฌ ์ด๋ ํ ์ปค๋ฐ์ผ๋ก๋ ์์ ์์ฌ๋ก ์ด๋ํ ์ ์๋ค. ์๋ฅผ ๋ค๋ฉด ํ์๊ฐ์
๋น๋ฐ๋ฒํธ ์
๋ ฅ ํผ ์ถ๊ฐ
์ปค๋ฐ์ ํด์ฌ ๊ฐ์ ์ฌ์ฉํ์ฌ git checkout ca693fd
๋ช
๋ น์ด๋ก ํ์๊ฐ์
๋น๋ฐ๋ฒํธ ์
๋ ฅ ํผ์ด ์ถ๊ฐ๋ ์์ ์ผ๋ก ์ด๋ํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ์๊ฐ์ฌํ์ด ๊ฐ๋ฅํ๋ค!
์ด๋ฌํ ์ปค๋ฐ์ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ๊ธฐ ์ํด์ ์ปค๋ฐ์ ๋ฐ๋์ ์คํ ๊ฐ๋ฅํ ๋จ์๋ก ํด์ผํ๋ค. ๋ ์ฝ๊ฒ ๋งํ์๋ฉด ํน์ ์ปค๋ฐ์ผ๋ก ๋ฒ์ ์ ๋ณ๊ฒฝํ์ ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ ๋๋ก ์คํ๋์ง ์๊ณ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ์๋๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ์์ ์์ ๋ณผ ์ ์๋ฏ์ด ์ปค๋ฐ์๋ ๋ฉ์ธ์ง๋ฅผ ๋ด์ ์ ์๋ค. ์ด ๋ฉ์ธ์ง๋ ์ด ์ปค๋ฐ์ผ๋ก ์ธํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฌด์์ธ์ง ์ง์ ์ ์ผ๋ก ํํํด์ฃผ๋ ์ ์ผํ ์๋จ์ด๋ฏ๋ก ์ข์ ์ปค๋ฐ ๋ฉ์ธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ํ ๊ณ ๋ฏผ์ ํ์๋ค. ๋คํํ๋ ์ด๋ฏธ ๋ง์ ๊ฐ๋ฐ์ ๋ถ๋ค์ด ์ข์ ์ปค๋ฐ ๋ฉ์ธ์ง๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ๋์ง์ ๋ํด ํฌ์คํ ์ ํด์ฃผ์ จ๊ธฐ ๋๋ฌธ์ ๊ตฌ๊ธ์์ ํ๋ฒ ๊ฒ์ํด๋ณด๋ฉด ์๋๋ฃฉํ๊ฒ ๋์จ๋ค.
์ฐธ๊ณ ๋ก ์ปค๋ฐ ๋ฉ์ธ์ง๋ ๊ผญ ์์ด์ฌ์ผ ํ ํ์๋ ์๋ค. ์กฐ์ง์ ๋ฐ๋ผ์ ์ปค๋ฐ ๋ฉ์ธ์ง๋ฅผ ์์ด๋ก๋ง ์์ฑํ๋๋ก ๊ฐ์ ํ๋ ๋ฃฐ์ด ์์ ์๋ ์์ง๋ง, ์ฌ์ค ์ปค๋ฐ ๋ฉ์ธ์ง๋ ๊ฒฐ๊ตญ ์ปค๋ฎค๋์ผ์ด์ ์๋จ์ด๋ฏ๋ก ์ธ์ ๋๊ฐ ๋ณด๋๋ผ๋ ์์๋ณด๊ธฐ ์ฝ๊ฒ๋ง ์์ฑํ๋ฉด ์ฅ๋ก์ด๋ค. ๊ทธ๋ฌ๋๊น ์์ด๊ฐ ์ต์ํ์ง ์์๋ฐ๋ ๋ถ๊ตฌํ๊ณ ๊ตณ์ด ์์ด๋ฅผ ๊ณ ์งํ ํ์๋ ์๋ค. ์คํ๋ ค ๊ฐ์ด ํ์ ํ๋ ํ์๋ค์ด ์์ด์ ์ต์ํ์ง ์๋ค๋ฉด ๊ทธ ๋ํ ๋ถํ์ํ ์ปค๋ฎค๋์ผ์ด์ ๋น์ฉ์ด ๋ ์ ์๋ค.
๋ํ ์ปค๋ฐ์ ์์ง ๋ฆฌ๋ชจํธ ์๋ฒ์ ํ์ผ์ ์ ์กํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ์ฉ์์ ํด๋ผ์ด์ธํธ ๋ด์์ ์ํ๋๋ ๊ณผ์ ์ด๋ฏ๋ก ์ธํฐ๋ท์ ์ฐ๊ฒฐ์ด ๋์ด ์์ง ์์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๋ ๊ฒ์ ์๋ฌด๋ฐ ์ง์ฅ์ด ์๋ค.(๋นํ๊ธฐ์์ ์ฝ๋ฉํ ๋๋ ์ปค๋ฐ๊น์ง๋ ๊ฐ๋ฅํ๋ค!)
์ฌ์ค ํ์๋ Git ๋ด๋น์ผ ๋ ์ด ์ปค๋ฐ์ด๋ผ๋ ๋จ์ด๊ฐ ์กฐ๊ธ ํท๊ฐ๋ ธ์๋๋ฐ, ๋ง์ ๊ฐ๋ฐ์ ๋ถ๋ค์ด commit
๊ณผ push
๋ฅผ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด์๋ค. ํ์ง๋ง ์ด ๋ ๋ช
๋ น์ด๋ ์์ฐํ ๋ค๋ฅธ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋๋ก์ด๋ฉด ๊ตฌ๋ถํด์ ์ฌ์ฉํ๋๋ก ํ์.
push
์ปค๋ฐ์ ํตํด ํฌ์ฅ๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ push
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ๋ชจํธ ์๋ฒ๋ก ์
๋ก๋ ๋๋ค. ์ด๋๋ ์ปค๋ฐ๋ ๋ณ๊ฒฝ ์ฌํญ๋ค์ ์ค์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ ์ก
ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ด ๋์ด์์ด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์ฌํ ๋ ๋ฐ๋์ A ๋ก์ปฌ ๋ธ๋์น๋ A ๋ฆฌ๋ชจํธ ๋ธ๋์น์๋ง ํธ์ฌํด์ผ ํ๋ค๋ ๋ฃฐ ๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ๋ค์ ๋ฆฌ๋ชจํธ ์๋ฒ๋ก ํธ์ฌํ ๋๋ Git์๊ฒ โ์ด๋ค ๋ฆฌ๋ชจํธ ์๋ฒ์ ์ด๋ค ๋ธ๋์น๋ก ํธ์ฌํ ๊ฒ์ธ์งโ๋ ํจ๊ป ์๋ ค์ค์ผ ํ๋ค.
$ git push origin master # origin ๋ฆฌ๋ชจํธ ์๋ฒ์ master ๋ธ๋์น๋ก ํธ์ฌํด์ค!
๊ทผ๋ฐ ์ด๊ฒ ๋ธ๋์น ์ด๋ฆ์ด master
์ ๋๋ฉด ๊ทธ๋๋ ๋ธ๋์น ์ด๋ฆ์ ๋งค๋ฒ ์
๋ ฅํด์ค๋ง ํ์ง๋ง feature/SD-0000-request-api-refactoring
์ ๋ ๋๋ฉด ๋ธ๋์น ์ด๋ฆ์ ๋งค๋ฒ ์
๋ ฅํ๋ค๋ ๊ฒ์ด ๊ท์ฐฎ์ ์๋ ์๋ค.
๊ทธ๋์ Git์ ๋ธ๋์น๋ฅผ ์๋์ผ๋ก ์ถ์ ํ ์ ์๋ ๊ธฐ๋ฅ ๋ํ ์ ๊ณตํด์ค๋ค.
$ git push --set-upstream origin master
--set-upstream
์ต์
์ ์ฌ์ฉํ๊ณ ์ฒ์ ํ๋ฒ๋ง ๋ธ๋์น ์ด๋ฆ์ ์
๋ ฅํด์ฃผ๋ฉด ๊ทธ ์ดํ๋ก๋ git push
๋ช
๋ น์ด๋ง ์
๋ ฅํด๋ ์๋์ผ๋ก ์ฒ์ ์
๋ ฅํ๋ ๋ธ๋์น๋ก ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ฌํ ์ ์๋ค.
์ด๋ ๊ฒ ํด์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ ํ์งํ ๋ฆฌ์์ ์์ค๋ฅผ ๋ด ์ปดํจํฐ์ ๋ฐ์์จ ๋ค ํ์ผ์ ๋ณ๊ฒฝํ๊ณ , ๊ทธ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆฌ๋ชจํธ ์๋ฒ์ ๋ค์ ์
๋ฐ์ดํธํ๋ clone -> ํ์ผ ์์ -> add -> commit -> push
๊ณผ์ ์ ํ๋ฒ ์ดํด๋ณด์๋ค.
๋ง์น๋ฉฐ
์ฌ์ค ๋ธ๋ก๊ทธ ํฌ์คํ
ํ๊ฐ๋ก Git์ ๋ํ ๊ฒ๋ค์ ๋ชจ๋ ์ค๋ช
ํ๋ค๋ ๊ฒ์ ํ๋ค๊ธฐ ๋๋ฌธ์ ๋ค์ ํฌ์คํ
์์๋ branch
, checkout
, merge
, revert
์ ๊ฐ์ด ๋ฒ์ ์ ์ค์ ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ช
๋ น์ด์ ๊ทธ ๊ฐ๋
์ ๋ํ ๋ด์ฉ์ ํฌ์คํ
ํ๋ ค๊ณ ํ๋ค.
Git์ ํ์ ์์ ๊ต์ฅํ ๋ง์ด ์ฌ์ฉ๋๊ณ ์์ง๋ง ์ ์ ๋ํ์ด๋ ํ์๊ฐ์ ๊ต์ก ๊ธฐ๊ด์์๋ ์ฝ๊ฐ ์ฉ๋ฆฌ ์ทจ๊ธ ๋ฐ๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค. ๋ญ ์ฌ์ค ๋ํ์์๋ ์ข ๋ ์๋ก ์ ์ธ ๊ณตํ์ ๋ฐฐ์ฐ๋ ๊ฑฐ์ง ์ฝ๋ฉ์ ์๋ ค์ฃผ๋ ๊ณณ์ ์๋๊ธฐ๋ ํ๊ณ , ํ์ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ๊ฐ๋ฅด์น ์๊ฐ์ ์ฝ๋ฉ์ ์๋ ค์ฃผ๋ ๊ฒ ๋ ์ทจ์ ์ ์ ๋ฆฌํ๋ ๊ทธ๋ด ์๋ ์์ ๊ฒ ๊ฐ๋ค. (์์ฆ์๋ ๋ํ์ ๊ฐ์ฌ ๋ถ๋ค์ด ์ค์ ์ Git์ ๋ํด ๊ฐ์ํ๋ ๊ฒฝ์ฐ๋ ์๋ค๊ณ ํ๋ค.)
์ด์จ๋ Git์ ์์ฐ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ ๋ชจ๋ ์ค์ ํ๋๋ง ๋ด ๋ธ๋์น๋ก ๊ฐ์ ธ์์ผ ํ๋ค๊ฑฐ๋, ์ปค๋ฐ์ด ๊ผฌ์ฌ์ ์์ค๊ฐ ์ง์์ก๋ค๊ฑฐ๋ํ๋ ๋ฑ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ๋ฐ์ํ๋ ์ฌํ ์ํฉ๋ค์ ์ ํค๊ฒฐํ ์๋ ์๊ธฐ ๋๋ฌธ์ ํ์๋ค์๊ฒ ์ด์จ๋ฐ๋ ๊ฐ๋ฐ์๊ฐ ๋ ์(๋) ์๋ค.
์ด์์ผ๋ก Git ๋ด๋น๋ฅผ ์ํ ๊ธฐ์ด ์ฌ์ฉ๋ฒ - ์์ํ๊ธฐ ํฌ์คํ ์ ๋ง์น๋ค.