GitHub

์ดˆ๊ธฐํ™” (init)

์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค ํด๋”๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ทธ ๊ฒฝ๋กœ์— ๊นƒ ๋ฐฐ์‹œ๋ฅผ ์—ด์–ด git init ๋ช…๋ น์–ด๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ ๋‹ค.

git init

์—ฌ๊ธฐ๊นŒ์ง€๋Š” ํ˜„์žฌ ๋กœ์ปฌ ์ €์žฅ์†Œ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค. ๋‘˜์ด ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค. ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ origin์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•˜๊ฒ ๋‹ค.

git remote add origin <์›๊ฒฉ ์ €์žฅ์†Œ ๊ฒฝ๋กœ>

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ถ”ํ›„ origin์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถ”๊ฐ€๋œ ์›๊ฒฉ ์ €์žฅ์†Œ ๋ชฉ๋ก์€ git remote ๋ช…๋ น์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

git remote -v // ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์ด๋ฆ„๊ณผ ๊ฒฝ๋กœ๋ฅผ ํ•จ๊ป˜ ํ™•์ธ
git remote rename <๊ธฐ์กด ์ด๋ฆ„> <๋ฐ”๊ฟ€ ์ด๋ฆ„> // ์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๋ช…๋ น์–ด
git remote remove <์›๊ฒฉ ์ €์žฅ์†Œ ์ด๋ฆ„> // ์›๊ฒฉ ์ €์žฅ์†Œ ์‚ญ์ œ

ํด๋ก (clone) : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋ณต์ œํ•˜๊ธฐ

ํด๋ก ํ•˜๋ฉด ๋ธŒ๋žœ์น˜๊ฐ€ ์„ธ ๊ฐœ๊ฐ€ ๋ณด์ธ๋‹ค.

  • main - ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜

  • origin/main - ์›๊ฒฉ ์ €์žฅ์†Œ origin์˜ ๊ธฐ๋ณธ ๋ธŒ๋žœ์น˜

  • origin/HEAD - ์›๊ฒฉ ์ €์žฅ์†Œ origin์˜ HEAD

// ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋“ค์–ด๊ฐ€์„œ code ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋‹ค์Œ ssh๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค. 
// ํด๋ก  ๋ฐ›์„ ์œ„์น˜์—์„œ ๊นƒ ๋ฐฐ์‹œ๋ฅผ ์—ด๊ณ 
git clone <๋ณต์‚ฌํ•œ ๊ฒฝ๋กœ>

SSH : ์•ˆ์ „ํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ•

key๋ฅผ ๋‘ ๊ฐœ ์ƒ์„ฑํ•œ ํ›„ (public, private) ํ†ต์‹ ํ•˜๋ ค๋Š” ๋Œ€์ƒ(gitHub)์—๊ฒŒ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๊ฑด๋„ค์ค€๋‹ค.

ํ‘ธ์‹œ (push) : ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋ฐ€์–ด๋„ฃ๊ธฐ

push๋ž€ ์›๊ฒฉ ์ €์žฅ์†Œ์— ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ€์–ด๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ํด๋ก ํ•ด์˜จ ๋’ค ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ํ•œ๋‹ค. ์ด ์ƒํƒœ์—์„œ ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์™€ ๊ฐ™๊ฒŒ ๋งŒ๋“ค ๋•Œ push ํ•ด์•ผ ํ•œ๋‹ค.

์ฒ˜์Œ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ํ‘ธ์‹œํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทธ๋Œ€๋กœ ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค.

git remote add origin <๊ฒฝ๋กœ> // ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ origin์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.
git branch -m main // ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ mian์œผ๋กœ ๋ฐ”๊พผ๋‹ค.
git push -u origin main // ์›๊ฒฉ ์ €์žฅ์†Œ origin์œผ๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ main ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ํ‘ธ์‹œ

-u ์˜ต์…˜์€ ์ฒ˜์Œ ํ‘ธ์‹œํ•  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ์ถ”ํ›„์—๋Š” git push(๋˜๋Š” git pull) ๋ช…๋ น๋งŒ์œผ๋กœ๋„ origin์˜ main ๋ธŒ๋žœ์น˜๋กœ push(ํ˜น์€ pull) ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒจ์น˜(fetch) : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ์ผ๋‹จ ๊ฐ€์ ธ๋งŒ ์˜ค๊ธฐ

ํ˜‘์—…ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด์ž. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ธ์ œ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ์€ ์‹œ์‹œ๊ฐ๊ฐ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ‘ธ์‹œํ•œ ๋‚ด์šฉ์„ ์ž์‹ ์˜ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด fetch์ด๋‹ค.

์ค‘์š”ํ•œ ๊ฑด fetch ํ•ด๋„ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์ด ๋กœ์ปฌ ์ €์žฅ์†Œ์— ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ์›๊ฒฉ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹์ด ํ•˜๋‚˜ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ git fetchํ•˜๊ณ  git status๋ฅผ ์ž…๋ ฅํ•ด ๋ณด๋ฉด 'Your branch is behind 'origin/main' by 1 commit'์ด๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ˜„์žฌ ๋ธŒ๋žœ์น˜๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ origin/main ๋ธŒ๋žœ์น˜์— ๋น„ํ•ด ์ปค๋ฐ‹ ํ•˜๋‚˜๊ฐ€ ๋’ค์ณ์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. fetch๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ผ ๋ฟ main ๋ธŒ๋žœ์น˜๋Š” ๋ณ€ํ•จ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

main ๋ธŒ๋žœ์น˜๋ฅผ origin/main ๋ธŒ๋žœ์น˜์™€ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ main ๋ธŒ๋žœ์น˜์—์„œ git merge origin/main ํ•œ๋‹ค.

ํ’€ (pull) : ์›๊ฒฉ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•ฉ์น˜๊ธฐ

fetch๊ฐ€ ์ผ๋‹จ ๊ฐ€์ ธ๋งŒ ์˜ค๋Š” ๊ฒƒ์ด๋ผ๋ฉด pull์€ ๊ฐ€์ ธ์™€์„œ ํ•ฉ์น˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฆ‰ fetch์™€ ๋ณ‘ํ•ฉ์„ ๋™์‹œ์— ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

git pull <์›๊ฒฉ๋ณ„์นญ> <๋ธŒ๋žœ์น˜> // ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ธŒ๋žœ์น˜ ๋‹น๊ฒจ์˜ค๊ธฐ
git pull --rebase <์›๊ฒฉ๋ณ„์นญ> <๋ธŒ๋žœ์น˜> // ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜๋กœ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ๋ฎ์–ด์“ฐ๊ธฐ

Pull Request : GitHub๋กœ ํ˜‘์—…ํ•˜๊ธฐ

ํ•œ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ž์‹ ์ด ์†Œ์œ ํ•˜์ง€ ์•Š์€ ์›๊ฒฉ ์ €์žฅ์†Œ์—๋„ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

์›๊ฒฉ ์ €์žฅ์†Œ ์†Œ์œ ์ž๊ฐ€ ๋‹น์‹ ์„ collaborator๋กœ ์ถ”๊ฐ€ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์ด ์†Œ์œ ํ•˜์ง€ ์•Š์€ ๊ณ„์ •์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํ‘ธ์‹œ ๊ถŒํ•œ์ด ์—†๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ๋Š” pull request๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•˜๋‹ค.

1

๊ธฐ์—ฌํ•˜๋ ค๋Š” ์ €์žฅ์†Œ๋ฅผ ๋ณธ์ธ ๊ณ„์ •์œผ๋กœ forkํ•˜๊ธฐ

2

์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜๊ธฐ

git clone <์›๊ฒฉ ์ €์žฅ์†Œ ๊ฒฝ๋กœ>
3

ํด๋ก  ๋ฐ›์€ ์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ์ด๋™ํ•˜๊ธฐ

4

๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ํ›„ ์ƒ์„ฑ๋œ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๊ธฐ

git branch <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
git checkout <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
5

์ฝ”๋“œ ์ˆ˜์ • ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ

git diff
6

git add -> git commit

7

์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜ ํ‘ธ์‹œํ•˜๊ธฐ

git push origin <๋ธŒ๋žœ์น˜ ์ด๋ฆ„>
8

pull request ๋ณด๋‚ด๊ธฐ

์›๊ฒฉ ์ €์žฅ์†Œ๋กœ ๋Œ์•„๊ฐ€๋ณด๋ฉด Compare & pull request ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด๋ฅผ ํด๋ฆญํ•œ๋‹ค.


git <๋ช…๋ น์–ด> --help : ๋ฉ”๋‰ด์–ผ ํŽ˜์ด์ง€ ๋ณด๊ธฐ


์ฐธ๊ณ  ๋ฌธํ—Œ

  • ๊ฐ•๋ฏผ์ฒ . ใ€Ž๋ชจ๋‘์˜ ๊นƒ & ๊นƒํ—ˆ๋ธŒใ€. ๊ธธ๋ฒ—, 2022.

Last updated