AIFFEL FD #02-1 Git, Github

์ด์žฌ์ค€ยท2021๋…„ 7์›” 3์ผ
0

AIFFEL Fundamental

๋ชฉ๋ก ๋ณด๊ธฐ
2/25

๐Ÿค ํ˜‘์—… ๋Šฅ๋ ฅ์— ๋Œ€ํ•ด

๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ผญ ํ•„์š”ํ•œ ๋Šฅ๋ ฅ ์ค‘ ํ•˜๋‚˜๋Š” ํ˜‘์—… ๋Šฅ๋ ฅ ์ด๋‹ค.
ํ˜‘์—… ๋Šฅ๋ ฅ์€ ๋ถ„์•ผ์™€ ์ง๋ฌด๋ฅผ ๋ง‰๋ก ํ•˜๊ณ  ์–ด๋””์„œ๋‚˜ ์ค‘์š”์‹œ๋˜๋Š” ๋Šฅ๋ ฅ์ธ ๋งŒํผ ์—ฌ๋Ÿฌ ํ˜‘์—… ํˆด์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.

  • Slack (์Šฌ๋ž™) : ํŒ€ ๋‹จ์œ„๋กœ ๊ฐ๊ฐ์˜ Workspace๋ฅผ ๋งŒ๋“ค์–ด ์†Œํ†ต ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Notion (๋…ธ์…˜) : ๋‹ค์–‘ํ•œ ํ…œํ”Œ๋ฆฟ๊ณผ ํฌ๋งท์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์—ฌ ํ˜‘์—…๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ˜ผ์ž ์—…๋ฌด๋ฅผ ์ง„ํ–‰ ํ•  ๋•Œ์—๋„ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • Trello (ํŠธ๋ ๋กœ) : To-Do ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ผ์˜ ์ˆœ์„œ์™€ ์ง„ํ–‰ ์ƒํ™ฉ๋“ฑ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ๊ด€๋ฆฌ ํ• ์ˆ˜ ์žˆ๋‹ค.
  • HangOut (ํ–‰์•„์›ƒ), Zoom (์คŒ), Google Meet (๊ตฌ๊ธ€๋ฐ‹) : ํ™”์ƒํšŒ์˜๋ฅผ ์œ„ํ•œ ํˆด์ด๋ฉฐ ๋™์‹œ์— ์—ฌ๋Ÿฌ๋ช…์ด ์ ‘์†ํ•˜์—ฌ ์นด๋ฉ”๋ผ๋กœ ์–ผ๊ตด์„ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜ ํ™”๋ฉด์„ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ, ์—ฌ๋Ÿฌ ํ‚ค์›Œ๋“œ๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•ด๋ณด๋Š” ์‹œ๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ ์›ํ•˜๋Š” ์ž๋ฃŒ๋ฅผ ์ž˜ ์ฐพ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ”๋Š” ๊ฒƒ ๋˜ํ•œ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

โ“ Git ๊ณผ GitHub

๋ฒ„์ „ ๊ด€๋ฆฌ ๋ž€?
ํŠน์ • ์‹œ์ ์˜ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ €์žฅํ•ด๋‘๊ณ , ์–ธ์ œ ๋‹ค์‹œ ๋Œ์•„์˜ค๋”๋ผ๋„ ๊ทธ ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•˜๋Š”๊ฒƒ

ํ”ํžˆ๋“ค ์Šคํ…Œ์ด์ง€๋ฅผ ํ•˜๋‚˜์”ฉ ๊นจ๋Š” ๊ฒŒ์ž„์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ด๋‹ค.

๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ ํ˜‘์—…ํ•˜๋ฉฐ ์ฝ”๋“œ๊ฐ€ ์ ์  ๊ธธ์–ด์ง์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ํ•„์š”์„ฑ์ด ์ปค์ง„๋‹ค.
์†Œ์Šค ์ฝ”๋“œ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๊ฐ€ Git ๊ณผ GitHub ์ด๋‹ค.

Git ์ด๋ž€?
๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๋ฒ„์ „์„ ๊ธฐ๋กํ•ด๋‘๊ณ  ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค์ฝ”๋“œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

GitHub ๋ž€?
Git์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ , ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์˜ ์ œ์•ฝ์—†์ด ํ˜‘์—… ํ•  ์ˆ˜ ์žˆ๋Š” ์˜จ๋ผ์ธ ์„œ๋น„์Šค

์ฆ‰, ๋กœ์ปฌ(Local) ์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ Git์ด ์ €์žฅํ•˜๊ณ , ์˜จ๋ผ์ธ ์ž‘์—… ๊ณต๊ฐ„์ธ GitHub ์— ์˜ฌ๋ ค ์›๊ฒฉ์œผ๋กœ๋„ ์ž‘์—… ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ๋ถ„ํˆฌ์—์„œ Git, GitHub ์‚ฌ์šฉํ•˜๊ธฐ

1. ํ„ฐ๋ฏธ๋„ ์‹œ์ž‘
Ctrl+Alt+T ๋ฅผ ๋ˆŒ๋Ÿฌ ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰์‹œํ‚จ๋‹ค.

2. ์šฐ๋ถ„ํˆฌ์— Git ์„ค์น˜
์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ git ์„ค์น˜ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

$ git --version

์„ค์น˜๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋Š” ๋‚ด์šฉ์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋กœ git์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ sudo apt-get install git

3. ๋กœ์ปฌ Git์— Github ๊ณ„์ • ๋“ฑ๋ก

๋กœ์ปฌ์™€ github ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•ด์•ผ ์›๊ฒฉ์œผ๋กœ git ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

$ git config --global user.email "my-email@gmail.com"
$ git config --global user.name "my-username"

4. ๋กœ์ปฌ ์ €์žฅ์†Œ ์ƒ์„ฑ

$ mkdir project # ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
$ cd project

mkdir : make directory ์˜ ์•ฝ์ž๋กœ, ์ƒˆ๋กœ์šด ํด๋”๋ฅผ ์ƒ์„ฑ
cd : change directory ์˜ ์•ฝ์ž๋กœ, ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ์œ„์น˜ ๋ณ€๊ฒฝ

์›ํ•˜๋Š” ํด๋”๋กœ ์˜ฎ๊ฒจ๊ฐ€์„œ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ git์œผ๋กœ ๊ด€๋ฆฌํ•˜์ž.

$ cd project
$ git init

init ์€ initialization ์˜ ์•ฝ์ž๋กœ, ์ง€๊ธˆ๋ถ€ํ„ฐ project ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋ณ€ํ™”๋ฅผ ๊ธฐ๋กํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

5. Git์œผ๋กœ ํŒŒ์ผ ๋ฒ„์ „ ๊ด€๋ฆฌ

README.md ๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด github ์— ์˜ฌ๋ฆด ์˜ˆ์ •์ด๋‹ค. README.md ํŒŒ์ผ์€ ๋งˆํฌ๋‹ค์šด ํ˜•์‹์˜ ํ™•์žฅ์ž๋กœ ์ฃผ๋กœ github ์—์„œ ์ƒˆ๋กœ์šด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์„๋•Œ ํ”„๋กœ์ ํŠธ์˜ ์†Œ๊ฐœ๋ฅผ ์ ๋Š” ๊ณณ์ด๋‹ค.

โ‘  README.md ์ƒ์„ฑ

$ echo "# first-repository" >> README.md

""์•ˆ์˜ ๋‚ด์šฉ์€ README.md ํŒŒ์ผ ๋‚ด๋ถ€์— ์ ํž ๋‚ด์šฉ์ด๋‹ค.

Git์ด ๊ธฐ๋กํ•˜๊ณ  ์žˆ๋Š” ๋ณ€ํ™”๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ git status

โ‘ก ์ƒ์„ฑํ•œ git์— ๋ฒ„์ „ ๊ด€๋ฆฌํ•  ํŒŒ์ผ ์ถ”๊ฐ€ (add)

$ git add README.md

โ‘ข commit (ํ™•์ •)

$ git commit -m "new readme file"

-m ์€ ๋ฉ”์„ธ์ง€๋ฅผ ์ ๋Š”๋‹ค๋Š” ์˜ต์…˜์ด๋ฉฐ "" ์•ˆ์˜ ๋‚ด์šฉ์€ ๋ณ€๊ฒฝ ๋‚ด์šฉ์ด๋‹ค.

add ์™€ commit ์˜ ์ฐจ์ด

Git ์˜ Repository ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ์„ธ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
์ž‘์—…ํด๋”(Working directory) > ์ธ๋ฑ์Šค(Staging Area) > ์ €์žฅ์†Œ(Head-Repository)

add ๋Š” ๋ณ€ํ™”๋ฅผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„ ๋‹จ๊ณ„์— ํ•ด๋‹นํ•œ๋‹ค.
commit ์€ ์ตœ์ข…์ ์œผ๋กœ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์ €์žฅ์†Œ๋กœ ์ด๋™ํ•ด ๋ณ€ํ™” ๊ธฐ๋ก์„ ํ™•์ •ํ•œ๋‹ค.

6. GitHub ์— ์—…๋กœ๋“œ

โ‘  ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์—ฐ๊ฒฐ

$ git remote add origin https://github.com/(username)/(repository name)

โ‘ก GitHub์— push (์—…๋กœ๋“œ)
ํ˜„์žฌ ๋กœ์ปฌ์— ์žˆ๋Š” ๋ฒ„์ „ ๊ธฐ๋ก๊ณผ ๋ชจ๋“  ํŒŒ์ผ๋“ค์„ origin, ์ฆ‰, ์›๊ฒฉ ์ €์žฅ์†Œ์˜ master ๋ธŒ๋žœ์น˜๋กœ push ํ•œ๋‹ค๋Š” ๋ช…๋ น์–ด๋Š” ์•„๋ž˜๊ณผ ๊ฐ™๋‹ค.

$ git push origin master

์œ„ ๋ช…๋ น์–ด์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค๋ฉด git push origin main ์œผ๋กœ ์‹œ๋„~

push๋ฅผ ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด git config credential.helper store ๋ช…๋ น์–ด๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

๋ธŒ๋žœ์น˜ (Branch) ๋ž€?
์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ• ๋•Œ ํ•„์š”ํ•˜๋‹ค. ๊ฐ๊ฐ์˜ ๋ธŒ๋žœ์น˜๋Š” ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

7. GitHub ์— ์žˆ๋Š” ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ

$ git clone https://github.com/(username)/(repository name)

clone ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์›๊ฒฉ์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

8. ๋กœ์ปฌ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ๊ณผ ๊ฐ™๊ฒŒ ์—…๋ฐ์ดํŠธ

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด clone ์„ ํ†ตํ•ด ๋‚ด๋ ค๋ฐ›๊ณ  ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด github ์— ์˜ฌ๋ ธ์„๋•Œ ์ด์ „์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ์‚ฌ๋žŒ์€ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ์ž์‹ ์˜ ๋กœ์ปฌ์— ์—…๋ฐ์ดํŠธ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. pull ์„ ํ†ตํ•ด ์ด ๊ณผ์ •์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ git pull origin master
profile
๐Ÿซ ๐‘ฒ๐’š๐’–๐’๐’ˆ ๐‘ฏ๐’†๐’† ๐‘ผ๐’๐’Š๐’—. / ๐Ÿ‘จโ€๐ŸŽ“ ๐‘ช๐’๐’๐’๐’†๐’ˆ๐’† ๐’๐’‡ ๐‘ฌ๐’๐’ˆ๐’Š๐’๐’†๐’†๐’“๐’Š๐’๐’ˆ

0๊ฐœ์˜ ๋Œ“๊ธ€