1. GitHub ์ธํ
1.1. GitHub ๊ฐ์
ํ๊ธฐ1.2. Repository ์์ฑํ๊ธฐ1.3. GitHub์ ํ์ผ ์ฌ๋ฆฌ๊ธฐ1.3.1. GUI, CLI๋ฅผ ์ด์ฉํ์ฌ GitHub์ ์ฌ๋ฆฌ๊ธฐ1.3.2. Repository ๋ด ํ์ํด๋ ์์ฑํ๊ธฐ2. git clone3. git pull4. git add, git commit, git push4.1 git add, git commit, git push4.2 git push password ์๋ฌ4.2.1. (์ค์ต) token ๋ฐ๊ธํ๊ธฐ4.2.2. SSH Key ์์ฑํ๊ธฐ
ย
1. GitHub ์ธํ
1.1. GitHub ๊ฐ์ ํ๊ธฐ
์๋ ํ์ด์ง๋ก ๋ค์ด๊ฐ ํ์๊ฐ์
์ ํด์ฃผ์ธ์! ๋ฉ์ผ ์ธ์ฆ๊น์ง ํ์
์ผ ํฉ๋๋ค.
ย
์ํ๋ ์ด๋ฉ์ผ์ ์
๋ ฅํ๊ณ Sign up for GitHub์ ํด๋ฆญํ์ ํ ํ์๊ฐ์
์ ์งํํฉ๋๋ค.

ย
ํ์ ๊ฐ์
ํ 4.2๋ก ๊ฐ์ token๋ฐ๊ธ์ ๋จผ์ ์งํํด์ฃผ์ธ์. ํ์ฌ ๋น๋ฐ๋ฒํธ ์ธ์ฆ์ ์ง์ํ์ง ์์ต๋๋ค.
ย
1.2. Repository ์์ฑํ๊ธฐ
๋ก๊ทธ์ธ์ด ๋์๋ค๋ฉด ์๋ Create repository๋ฅผ ํด๋ฆญํฉ๋๋ค.

์ด๋ฏธ ๋ง๋ค์ด์ง repository๊ฐ ์๋ค๋ฉด ์๋์ฒ๋ผ New๋ฅผ ํด๋ฆญํด์ฃผ์ธ์.

ย
๋ ํ์งํ ๋ฆฌ ์ด๋ฆ์ ์ค์ ํ๊ณ Public(๊ณต๊ฐ)/Private(๋น๊ณต๊ฐ)๋ฅผ ์ค์ ํ์ ํ, Add a README file์ ํด๋ฆญํ์ฌ README file์ ์ถ๊ฐํฉ๋๋ค. ์ค์ ์ด ์๋ฃ๋๋ฉด Create Repository๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋์ค์ ์ค์ ํญ์์ Public๊ณผ Private ์ํธ ๋ณ๊ฒฝ ๊ฐ๋ฅํฉ๋๋ค.
- Add a README file์ ๋ณดํต ์ฒดํน์ ํ์ง ์๊ณ ์์ฑํ์ง๋ง, ๊ฐํธํ ์ค์ต์ ์ํด ์ฒดํนํ์ฌ ์์ฑํ๊ณ ์ค์ตํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฒดํน์ ํ ๊ฒ๊ณผ ์ฒดํน์ ํ์ง ์์ ๊ฒ 2๊ฐ ๋ชจ๋ ์งํํฉ๋๋ค.

1.3. GitHub์ ํ์ผ ์ฌ๋ฆฌ๊ธฐ
1.3.1. GUI, CLI๋ฅผ ์ด์ฉํ์ฌ GitHub์ ์ฌ๋ฆฌ๊ธฐ
- Add file > Upload File > 001.html
- ์ด๊ธฐ ๋ ํ์งํ ๋ฆฌ ์์ฑ์ README.md ํ์ผ์ ์์ฑํ์ง ์์์ ๊ฒฝ์ฐ ํด๋น ํ๋ฉด์ด ๋์ค์ง ์๊ณ , ์๋์ ๊ฐ์ git ๋ช ๋ น์ด๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค. ๋๊ฐ์ด git bash์ ์ ๋ ฅํด์ฃผ์๋ฉด README.mdํ์ผ์ด GitHub ๋ ํ์งํ ๋ฆฌ๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.

์ด๋ฏธ ๋ ํ์งํ ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ 2๋ฒ์งธ ๋์ค๋ ์ฝ๋๋ฅผ ์คํ์์ผ์ผ ํ๋๋ฐ์. ์ด ํ์ด์ง ๊ฐ์ฅ ํ๋จ์ ํด๋น ๋ด์ฉ์ด ์์ต๋๋ค.



1.3.2. Repository ๋ด ํ์ํด๋ ์์ฑํ๊ธฐ
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค๋ณด๋ฉด ๋ ํ์งํ ๋ฆฌ์ ๊ฐฏ์๊ฐ ๋์ด๋๊ฒ ๋ ๊ฒ๋๋ค. ์ด๋ ๊ฒ ๋์ด๋ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์๋ ํ์ ํด๋์ ์์ฑ์ด ํ์ํ์ฃ . ํ์ ํด๋๋ฅผ ์์ฑํ๊ณ ์ ํ๋ ๋ ํ์งํ ๋ฆฌ์ ๋ค์ด๊ฐ ํ, ์๋ ์์๋ฅผ ๋ฐ๋ผ ํด๋๋ฅผ ์์ฑํด ๋ด
์๋ค.
ย
1) ์ฐ์ธก ์๋จ์
Add file
์ ํด๋ฆญํ๊ณ Create new file
์ ํด๋ฆญํฉ๋๋ค.
ย
2)
/
๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋๊ฐ ๋ถ๋ฆฌ๋ฉ๋๋ค. /{ํด๋๋ช
}
์ ์
๋ ฅํด์ ํด๋๋ฅผ ์์ฑํฉ๋๋ค.
ย
3) ๋น ํด๋๋ ์์ฑ๋์ง ์์์! ์์์ ํ์ผ์ ์์ฑํด์ฃผ์ด์ผ ์๋์ ๊ฐ์ด
commit new file
๋ฒํผ์ด ํ์ฑํ ๋ฉ๋๋ค. Commit new file
๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.

ย
4)
githubTest
๋ ํ์งํ ๋ฆฌ์์ test
ํด๋๊ฐ ์์ฑ๋์๊ณ ํด๋์ ํ์์ index.html
ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. 
index.html ํ์ผ์ ๊ฐ๊ฐ์ ํ์ ํด๋๋ก ๋ฃ๊ณ GitHub Page๋ฅผ ์ด์ํ ๊ฒฝ์ฐ ํ์ ํด๋๋ฅผ
http://{๊ณ์ ๋ช
}.github.io/{ํด๋๋ช
}/{ํด๋๋ช
}
๊ณผ ๊ฐ์ด URL ๊ตฌ์กฐ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์) paullabkorea/githubtest/test โ ์ค์ ๋ก๋ test ํด๋์ index.html๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.์ค๋ฌด์์ ๋ฐ๋ก ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒฝ์ฐ, github์ ์ฒ์ ์ฌ์ฉํ์๋ ๋ถ์ ๊ฐ๋ณ๊ฒ GUI๋ก๋ง ์ฌ์ฉํ์๊ณ ์ต์ํด์ง ๋ค์ CLI๋ก ๋์ด๊ฐ์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค.
2. git clone
- ์๊ฒฉ ์ ์ฅ์์ ์ฝ๋๋ฅผ ์ปดํจํฐ์ ๋ฐ์์ฌ ์ ์์ต๋๋ค. ์ ์์
๋๋ ํ ๋ฆฌ ๋ง๋ค๊ณ (
mkdir
๋ช ๋ น์ด) ์์ฑํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋(cd
๋ช ๋ น์ด)ํ๊ฒ ์ต๋๋ค.
$ mkdir filename $ cd filename $ git clone https://github.com/id/clone-filename.git .
ย


ย
ํด๋ก ์ ์ (.)์ ์ฐ๋ ์ด์ ๋ ํ์ฌ ํด๋์ ํด๋ก ๋ฐ๊ธฐ ์ํด์ ์
๋๋ค. ๋ง์ฝ, ์ (.)์ ์ฐ์ง ์์ ๊ฒฝ์ฐ ์ ํด๋๋ฅผ ์์ฑํฉ๋๋ค.
ย
3. git pull
์๊ฒฉ ์ ์ฅ์์ ์
๋ฐ์ดํธ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ณํฉํ ๋ ์ฌ์ฉํฉ๋๋ค.
$ git pull origin main


- ์ฝ๋๋ฅผ ์์ ํ๊ณ pull ๋ฐ์ผ๋ คํ๋ ๋๊ตฐ๊ฐ ์ด๋ฏธ ์ฝ๋๋ฅผ ์์ ํ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๋ช ๋ น์ด ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ด push๋ฅผ ํ๋ ค๊ณ ํ๋๋ ๋๊ตฐ๊ฐ ์ด๋ฏธ push๋ฅผ ํด์ pull์ ๋ฐ์์ผ ํ๋ ์ํฉ์ด ๋๊ฑฐ์ฃ .
์๋๋ฆฌ์ค A์ฌ๋ clone --- push1 B์ฌ๋ clone -------------- pull-push2 C์ฌ๋ clone ------------------------------- push3(pull ๋ฐ์ง ์์ error)
- ๋ก์ปฌ main๊ณผ ์๊ฒฉ main์ ๋ค๋ฅธ ๋ธ๋์น๋ก ๋ณด๊ณ ๋ณํฉํฉ๋๋ค.
git pull --no-rebase
- ์๊ฐ์ ์์๋๋ก ๋ณํฉํฉ๋๋ค.
git pull --rebase
4. git add, git commit, git push
4.1 git add, git commit, git push
์ด๋ฏธ์ง ํ์ผ์ ๋ค์ด๋ก๋ ๋ฐ์ ๊ณณ์ ์ฌ๋ฆฌ๊ณ ์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.
- ๊ถํ์ด ์ฃผ์ด์ง ๊ฒฝ์ฐ์๋ ์์ค์ฝ๋ ์์ ํ ์ปค๋ฐ๊ณผ ํธ์ํ๊ธฐ
$ git status $ git add . $ git commit -m "์ถ๊ฐ ์์ ๋ด์ญ์ ๋๋ค." $ git push origin main
ย
push๊ฐ ์๋ฃ๋๋ฉด GitHub์ ์ ์ฌ๋ผ๊ฐ๋์ง ํ์ธํฉ๋๋ค. push๋ฅผ ํ๊ฒ ๋๋ฉด ๋ก์ปฌ ์ ์ฅ์์ ์๋ ์์ค์ฝ๋ ๋๋ ํ์ผ๋ค์ด GitHub์ ์ฌ๋ผ๊ฐ๊ฒ ๋ฉ๋๋ค.



ย
GUI ํ๊ฒฝ์์ ํ์คํ ๋ฆฌ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์๋์ฒ๋ผ ๋๊ฐ ์ด๋ค ์์ค์ฝ๋๋ฅผ ์์ ํ๋์ง ๋ด์ญ์ ํ์ธํ ์ ์์ต๋๋ค. ๋๋๋ฆด ์๋ ์์ต๋๋ค.
ย

ย
- ์๊ฒฉ ์ ์ฅ์์ ๋ก์ปฌ ์ ์ฅ์์ ์ฑํฌ๊ฐ ๋ง์ง ์์(์๋ฅผ ๋ค์ด ์ปด๋ฐ ๊ฐ์๊ฐ ๋ค๋ฅด๋ค๋์ง) ๋ก์ปฌ ์ ์ฅ์๋ก ๊ฐ์ ๋ก ๋ง์ถ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ ํผ์ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ฉํ์๊ณ ์ ๋ ํ์ ์ ์ฌ์ฉํด์๋ ์๋๋ ๋ช ๋ น์ด์ ๋๋ค.
git push --force
4.2 git push password ์๋ฌ
- (23๋ 3์, ๋งฅ๋ถ) token์ ๋ฐ๊ธํ์ง ์์๋ readme.md ํ์ผ ์์ด ๋ ํ์งํ ๋ฆฌ ์์ฑ ํ github์์ ์ ์ํ ๋ช ๋ น์ด๋ฅผ Visual Studio Code ํฐ๋ฏธ๋์ ์ ๋ ฅํ๋ฉด ๊ฐ๋จํ ์น ์ธ์ฆ๋ง์ผ๋ก ์ฐ๊ฒฐ์ด ๋ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค.(OS์ ๋ฐ๋ผ ์๋ ์๋ ์์ต๋๋ค.)
push ํ ๋ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ ์ ์์ต๋๋ค. 2021๋
8์ 13์ผ๋ถํฐ ๋น๋ฐ๋ฒํธ ์ธ์ฆ ์ง์์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ๋ณด์ ์
๋ฐ์ดํธ๊ฐ ๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.
ย
์์ ๊ฐ์ ๊ฒฝ์ฐ, ๋น๋ฐ๋ฒํธ ๋์ token ์ด๋ ssh ๋๊ฐ์ง ์ค ํ๋์ ์ธ์ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ค์ต์ 4.4.1 token ๋ฐ๊ธ๋ง ์งํํฉ๋๋ค.
4.2.1. (์ค์ต) token ๋ฐ๊ธํ๊ธฐ
- GitHub ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ ๊ฐ์ธ ํ๋กํ์ ํด๋ฆญํ ํ, Settings๋ฅผ ํด๋ฆญํฉ๋๋ค.


- ์ข์ธก ๋ฉ๋ด ๊ฐ์ฅ ํ๋จ์ ์๋ Developer settings > Personal access token > Personal access tokens (classic) > Generate new token์ ํด๋ฆญํฉ๋๋ค.

- ํด๋ฆญ์ ํ์ ๋ Generate new token (classic)์ ์ ํํด์ฃผ์ธ์. ํด๋ํฐ ์ธ์ฆ์ ํ์ฑํ ๋์๋ค๋ฉด ์๋์ฒ๋ผ ํด๋ํฐ ์ธ์ฆ์ด ๋ด์ ์๋ ์์ต๋๋ค. ํ์ฑํ ํด๋์ง ์์๋ค๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ ์ฐฝ์ด ๋ด์๊ฒ๋๋ค.


- ์ธ์ฆ์ ๋ง์น๋ฉด, ํ ํฐ์ ์์ฑํฉ๋๋ค. ํ ํฐ ์ด๋ฆ๊ณผ ํ๊ฐํ ๊ถํ์ ์ฒดํฌํ ํ์ Generate token์ ํด๋ฆญํฉ๋๋ค. (repoํ๋๋ง ์ฒดํฌํ์ ๋ ์ค์ตํ๋๋ฐ ์ง์ฅ ์์ต๋๋ค.)

ย
- ์์ฑ๋ ํ ํฐ์ ๋ณต์ฌํ๊ณ ํ์ํ ๊ณณ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ํ ํฐ์ ํ๋ฒ๋ง ๋ณด์ฌ์ง๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ณณ์ ๋ณด๊ดํฉ๋๋ค. ์ฐ์ ๋ฉ๋ชจ์ฅ์ ๋ณต์ฌํด๋์ธ์. ๋ฐ๊ธ๋ ํ ํฐ์ ๋ถ์ฌ๋ ๊ถํ๋ง ๋ณผ ์ ์์ต๋๋ค. ์ฌ๋ฐ๊ธ์ ์ํ ๊ฒฝ์ฐ์๋ ์ฌ๋ฐ๊ธํ๊ณ ์ ํ๋ ํ ํฐ์ ํด๋ฆญ ํ, Regenerate token์ ํด๋ฆญํ๋ฉด ํ ํฐ์ด ์ฌ์์ฑ ๋ฉ๋๋ค.
ย
- ํ ํฐ ๋ฐ๊ธ์ด ์๋ฃ๋๋ฉด ์ด์์ฒด์ ์ ๋ง๊ฒ ์ ์ฉ์ํต๋๋ค.
- Windows
- Mac Mac OS์ ๊ฒฝ์ฐ push ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ์ฌ์ ํ ๊ฐ์ ์๋ฌ๊ฐ ๋ํ๋ ์ ์์ต๋๋ค. Mac ํค์ฒด์ธ์ ๋ฑ๋ก๋์ด ์๋ GitHub ๊ถํ ์ ๋ณด๊ฐ ID/Password๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ์. ์ด๋ด ๊ฒฝ์ฐ์๋ GitHub์ ๊ถํ ์ ๋ณด๋ฅผ ์์ ๋ฐ๊ธ๋ฐ์ ID/Personal Access Token์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ด์ผ ํฉ๋๋ค. ์๋์ ์์์ ๋ฐ๋ผ ๋ณ๊ฒฝํด๋ณด์ธ์!
์ ์ดํ > ์ฌ์ฉ์ ๊ณ์ > ์๊ฒฉ ์ฆ๋ช
๊ด๋ฆฌ์ > Windows ์๊ฒฉ์ฆ๋ช
> git:https//github.com ์ฐพ๊ธฐ > ํธ์ง > ์ํธ๋ฅผ token์ผ๋ก ๋์ฒด
1) ํค์ฒด์ธ ์ ๊ทผ (Keychain Access app)

ย
2) github.com ์ฐพ๊ธฐ

github.com์ด ์์ผ์ ๊ฒฝ์ฐ์๋ ๋นจ๊ฐ์ ๋ฐ์ค ๋ฒํผ์ ํด๋ฆญ ํ ์ถ๊ฐํ์๋ฉด ๋ฉ๋๋ค.

ย
์๋์ ๊ฐ์ด ์ด๋ฆ๊ณผ ๊ณ์ ์ด๋ฆ ์ถ๊ฐํ์๋ฉด ๋ฉ๋๋ค.

ย
3) ์ํธ๋ณด๊ธฐ(show password)๋ฅผ ํด๋ฆญํ์ฌ token ์ํธ๋ก ๋์ฒดํฉ๋๋ค.

ย
4) ๋ง์ฝ ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋จ๋ฉด MAC ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ์๋ฉด ๋ฉ๋๋ค.

ย
4.2.2. SSH Key ์์ฑํ๊ธฐ
- ssh key๋ฅผ ์์ฑํฉ๋๋ค. GitHub ๊ณ์ ์์ฑ ์ ์ฌ์ฉํ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
$ ssh-keygen -t rsa -C "email@example.com" Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): Enter๋ฅผ ๋๋ฆ ๋๋ค. Enter passphrase (empty for no passphrase): github password Enter same passphrase again: github password
ย
- ๊ณต๊ฐํค๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ณต๊ฐํค๊ฐ ์ถ๋ ฅ๋๋ฉด ๋ณต์ฌํฉ๋๋ค.
$ cat ~/.ssh/id_rsa.pub
ย
- GitHub ์๋จ์ ์๋ ๊ฐ์ธ ํ๋กํ์ ํด๋ฆญํ ํ, Settings๋ฅผ ํด๋ฆญํฉ๋๋ค.

ย
- ์ข์ธก ๋ฉ๋ด์ SSH and GPG keys > New SSH key๋ฅผ ํด๋ฆญํ์ฌ SSH Key ์ด๋ฆ๊ณผ Key์ ๋ณต์ฌํ ๊ณต๊ฐํค๋ฅผ ๋ถ์ฌ๋ฃ์ต๋๋ค.
ย
- SSH Key ๊ณต๊ฐํค๊ฐ ์ ๋ฑ๋ก๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.

ย
- ๋ ํ์งํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์๋ค๋ฉด 2๋ฒ์งธ ์ฌํญ ์ ํ

git remote add origin https://github.com/paullabkorea/githubtest.git - https://github.com/paullabkorea/githubtest.git์ ์ฅ์๋ฅผ origin์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ ๋ฑ๋ก git branch -M main - ํ์ฌ ๋ก์ปฌ์์ master๋ก ๋์ด ์๋ ๊ธฐ๋ณธ ๋ธ๋์น๋ฅผ main์ผ๋ก ์ค์ - ๊ธฐ๋ณธ ๋ธ๋์น๋ช ๋ณ๊ฒฝ(git config --global init.defaultbranch main)์ ํด๋์ จ์ผ๋ฉด 2๋ฒ์งธ ์๋ต ๊ฐ๋ฅ git push -u origin main - origin์๊ฒฉ ์ ์ฅ์์ main ๋ธ๋ ์น์ ํ์ฌ ๋ธ๋์น ์ฐ๊ฒฐ(--set-upstream(๋จ์ถ : -u) )
ย