๐Today...
์ค๋์ ์ฒซ ํ์ดํ๋ก๊ทธ๋๋ฐ์ ์งํํ๋ค...! ๊ฒจ์ฐ ์ผ์ผ๋์ ์จ๋ผ์ธ์ผ๋ก ์์ ๋ฃ๊ณ ๋ง๋๋ ํ์ด๋ผ๋... ์์ฐํ ๋ฌธ์ ํด๊ฒฐ๋ณด๋ค๋ ๊ฑฑ์ ์ด ์์ฐ๋๊ฑฐ๊ฐ๋ค. ์ธ๋ถ์์ ์ฌ๋๋ค์ ๋ง๋๊ณ ์ด์ผ๊ธฐํ๋๊ฒ์ ๋ฑํ ์ด๋ ต๋ค๊ณ ์๊ฐํ์ง ์๋๋ฐ, ์คํ๋ ค ์จ๋ผ์ธ์์ ๋ง๋์ ์ผ๊ตด์ ๋ณด๊ณ ๋ํํด์ผ๋๋ค๋๊ฒ์ด ์๊ฐ๋ณด๋ค ๋ถ๋ด์ผ๋ก ๋ค๊ฐ์จ๊ฒ๊ฐ์๋ค. ๊ทผ๋ฐ ์๊ฐ๋ณด๋ค ์ด๊ฑฐ ๊ด์ฐฎ์๋ฐ? ์ถ์๋ค. ํ์ด๋ถ๊ณผ ์ฒซ ๋ํ์ฌ์ ์ด์์ด์ํ ์ํ๋ก ๊ณผ์ ๋ฅผ ํ๋์ฉ ํ์ด๋๊ฐ๋๊ฒ ์ฌ๋ฏธ์์๋คใ ใ ใ ์จ๋ Git์ ๋ํด์ ๋ฐฐ์ ๋๋ฐ ํผ์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํด๊ฐ๋ฉด์ ์ด์ฌํ ๋ฐ๋ผํ๋๊ฒ ๋๋ฆ ๋์์ด ๋๋๊ฒ๊ฐ๋ค. ์ค๋์ ์ก๋ด์ ์ฌ๊ธฐ๊น์ง...!
โ์ค๋์ TIL(Today I Learn)
Git์ด๋?
#Git
Git์ ๋ฆฌ๋์ค ํ ๋ฐ์ฆ๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ผ๋ก ํ์ผ์ ๊ด๋ฆฌํด ์ฃผ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์ฌ๊ธฐ์ ๊ด๋ฆฌ๋ผ๋ ๊ฒ์
- ๋ฒ์ ๊ด๋ฆฌ
- ๋ฐฑ์
- ํ์
์ ๋๋ก ์๊ฐํด๋ณผ์์๋๋ฐ ๊ทธ๋ผ ์๋ฌธ์ด ์๊ธด๋ค. ์น์ ์กฐ๊ธ๋ง ๊ด์ฌ์ ๊ฐ์ง๋ฉด ์์ฃผ๋ฃ๊ฒ๋๋ ๊นํ๋ธ๋ ๊ณผ์ฐ ๋ฌด์์ธ๊ฐ?
๊นํ๋ธ๋ ๋ก์ปฌ์์ ๊ด๋ฆฌ๋๋ Git์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ํด๋ผ์ฐ๋๋ฅผ ํตํด ๊ด๋ฆฌํ๊ณ ์ด์ํ๋ ๋ฐฉ์์ด๋ค. ์ฆ ํ์ ์ด๋ ๋ฐฑ์ ์ ๊ด์ ์์ ๋ก์ปฌ๋ก๋ง ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐ๋๋ค.
Git ๊ธฐ์ด
# Git์ ์์ญ
Git์ ์์ญ์ ์ด๋ ๊ฒ 3๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
(1) Work space : ํ์ผ์ด ์์๋ก ๋๊ธฐํ๋ ์์ญ
(2) Staging area
(3) Local repository :
git init
์ ํ๊ฒ๋๋ฉด ํด๋น๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ๋ค์ด Git์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ฒ๋๋ค. ์ด๋์ ์ํ๊ฐ Work space์ด๋ค.
Work space์ ์ฌ๋ผ๊ฐ์๋์ํ๋ Git์ ๊ด๋ฆฌ๋ฅผ ๋ฐ๊ฒ๋ Tracked(์ถ์ ๋๊ณ ์์) ๋ผ๊ณ ํ ์์๋ค. ๊ทธ๋ฆฌ๊ณ git์ด๊ธฐํ๊ฐ ๋์ง์์ ์ํ๋ฅผ Untracked(์ถ์ ๋๊ณ ์์ง์์) ์ํ๋ผ๊ณ ํ ์์๋ค.
์ถ์ ์ด ๋๊ณ ์๋ค๋ ์ด์ผ๊ธฐ๋ ํ์ผ์ ์์ ์ด๋ ๋ณ๊ฒฝ์ด ์์๋ Git์ด ํ์ผ์ ๋ณ๊ฒฝ ๋ด์ฉ์ ๊ฐ์ง๊ฐ๋ฅํ ์ํ๋ผ๊ณ ๋ณผ์์๋ค.
๊ทธ๋ฆฌ๊ณ Tracked์ ๊ฒฝ์ฐ ๋ค์ 3๊ฐ์ง ์ํ๋ก ๋๋ ์ง๋ค.
Unmodified : ํ์ผ์ ์์ ์ด Git์ ์ํด ๊ฐ์ง๋์ง ์์ ์ํ
Modified : ํ์ผ์ ์์ ์ด Git์ ์ํด ๊ฐ์ง๋ ์ํ
Staged : ํ์ผ์ด Staging area์ ์กด์ฌํ๋ ์ํ
์ฆ ์์ ๊ทธ๋ฆผ์์ Work space -> Staging area๋ก ์ด๋์ ํ๊ฒ๋ ์ํ๋ฅผ Staged๋ผ๊ณ ํ๋ฉฐ ์ด๋ฅผ ์ํด์๋
git add .
๋ช ๋ น์ด๊ฐ ํ์ํ๋ค. (์ด๋๋ ์๋ฌด๋ฐ ๋ฉ์ธ์ง๋ ์ถ๋ ฅ์๋จ), ์ฑ๊ณต์ ์ธ ์ํ์ ํ์ธํ๊ณ ์ถ์ผ๋ฉด
git status
๋ฅผ ํตํด์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ Stage์ ์ฌ๋ฆฐ ํ์ผ์ ๋ค์ Staging are -> Work space๋ก ๋๋ฆฌ๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด๋๋ค.
git rm --cached [file name]
์์ด์ Staging are์ ์๋ ํ์ผ์ Local repository๋ก ์ฎ๊ฒจ๋ณด์. ์ด๋ฅผ commit ์ด๋ผ๊ณ ํ๋ฉฐ Local repository์ ํ์ผ์ ์ ์ฅํ๋ฉฐ ๋์์ ํ์ผ์ ๋ฒ์ ๊น์ง ๊ธฐ๋ก์ ํ๋ค.
git commit -m "[short message]"
commit์ด ์๋ฃ๋ ์ํ์์
git log
๋ฅผ ์ ๋ ฅํ๋ฉด ํฐ๋ฏธ๋ ๋ด์ ๋ณ๋์ ์ฐฝ์ด ์ด๋ฆฌ๋ฉด์ commit ๋ด์ญ์ ํ์ธํ๋๊ฒ์ด ๊ฐ๋ฅํ๋ค.
์ด๋ ๋ก๊ทธ๋ฉ์ธ์ง์ค์ HEAD๋ ๋ธ๋์น๋ค์ค์ ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๋ฅผ ๋งํ๊ณ ์ซ์์์ด ์กฐํฉ์ ํด์๊ฐ์ด ๋ฒ์ ๋ง๋ค ๋ถ์ฌ๋๋๋ฐ ์ด๋ฅผ ์ปค๋ฐ ํด์๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด๋ฅผ ํตํด ๋ฒ์ ์ ์๋ณํ ์์๋ค.
์ง๊ธ๊น์ง์ ์์ ์ ๋ก์ปฌ์์ ์งํ๋๊ฒ์ด๊ณ ์ด์ Github๋ฅผ ํตํด Remote repository๋ก ์ด๋ฅผ ์ฎ๊ฒจ๋ณด์. ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์จ๋ผ์ธ์ Remote repository ์์ฑ
2. Remote repository ์ Local repository ์ฐ๊ฒฐ ( git remote )
3. ์ ๋ก๋
1๋ฒ์์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์ผ๋ ์๋ตํ๊ณ ๋ค์์ 2๋ฒ git remote๋ฅผ ํตํด ์ฐ๊ฒฐ์ ํ ์ฐจ๋ก์ด๋ค.
git remote add [๋ณ์นญ] [์๊ฒฉ์ ์ฅ์ URL]
//ex
git remote add origin https://github.com/example/example.git
์ด๋ ๊ฒ ์ฐ๊ฒฐ์ ์งํํ๋ค์ ๋ง์ฝ Remote repository๋ฅผ ๋ค์ ์ฐ๊ฒฐํด์ ํ๋ ค๋ฉด
git remote rm [ํด์ ํ ๋ณ์นญ]
์ ํตํด์ ํด์ ๊ฐ ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋์ง ํ์ธํ๋ ค๋ฉด
git remote --v
์ด๋ฐ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋๋ฐ ์ด๋
fetch๋ ํ์ผ์ ๋ด๋ ค๋ฐ์๋ ์ฌ์ฉํ๋ ๋ณ์นญ๊ณผ URL์ ๋ํ๋ด๊ณ
push๋ Remote repository๋ก ์ ๋ก๋ํ ๋ ์ฌ์ฉํ๋ ๋ณ์นญ๊ณผ URL์ ๋ํ๋ธ๋ค.
์์ด์ ์ฐ๊ฒฐ์ด ๋๋ฌ์ผ๋ ๋ง์ง๋ง์ผ๋ก ์์ ๋ฌผ์ Remote repository์ ์ ๋ก๋ ํด๋ณด์. ์ด๋ฅผ push๋ผ๊ณ ๋ถ๋ฅธ๋ค.
git push [remote์ ์
๋ ฅํ๋ ๋ณ์นญ] [๋ธ๋์น ์ด๋ฆ]
//ex
git push origin main
์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค..!
Git ์ค์ต
์๊ฑฐ ๊ทธ๋ฆผ ์จ๋ ๋๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ... ์ผ๋จ ๋๋ฌด ์์ ๋ฆฌ๋์ด์์ด์ ์ฌ๋ ค๋๊ณ ๋ง์ฝ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ญ์ ํด์ผ๊ฒ ๋ค..!
# ํ์
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ธ์ Repo์ ์ฐ๊ฒฐํ์ฌ ํ์ ํ ์ผ์ด ๋ฐ์ํ๋ฉด ์ผ๋จ ํ์ธ์ repo์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฐ๊ฒฐํ๋ค.
git remote add [repo ๋ณ์นญ] [repo URL]
//ex
git remote add pair <์ฐ๊ฒฐํ ์ฃผ์>
๊ทธ๋ฆฌ๊ณ ์ด์ํ์์ ์๋ก ์์ ์ด ์งํ๋๊ณ ์์ ๋ฌผ์ ๋ฐ์์ค๋ ค๋ฉด
git pull [repo ๋ณ์นญ] [๋ธ๋์น์ด๋ฆ]
//ex
git pull pair main
์ด๋ฐ์์ผ๋ก ํด์ ์๋๋ฐฉ์ remote repository์ ์์ ๋ฌผ์ ๋ฐ์์ฌ์์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ฐ์์ค๋ ๋ด์ฉ์ ์๋์ผ๋ก ๋ณํฉ(merge)๋๋ค.
Git ๋ช ๋ น์ด ๋ชจ์
git clone [URL] //remote repository ๋ก์ปฌ๋ก ๋ณต์
๐ํผ์์ ํด๊ฒฐํ๊ธฐ
1. ํ์ ์งํ์์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด?
ํ์ ์ค ๋์ผํ ๋ผ์ธ์ ์์ ํ๋ค ์๋ก pull์ ํ๊ฒ๋๋ฉด merge ์คํจ๊ฐ ๋ฐ์ํ๋ค. ์ด๋๋ git status ๋ช ๋ น์ผ๋ก ํ์ธ์ด ๊ฐ๋ฅํ๊ณ ํ์ผ์ ์ด์ด๋ณด๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ๋ถ๋ถ์ ๋ณผ์์๋ค. ์ถฉ๋์ด ์ผ์ด๋ ๋ถ๋ถ์ ์์ ํ๋ค์ ๋ค์ staging area๋ก ํ์ผ์ ์ถ๊ฐํ๊ณ commit์ ์งํํ๋ฉด๋๋ค.
2. ๋ฆฌ๋ ์คํ๊ฒฝ์์ Github SSH์ธ์ฆ๊ณผ์ ์์ ์ฅ์ ๋ฐ์
2023.04.18 - [Tip!โจ] - ์ฐ๋ถํฌ ํ๊ฒฝ์์ Github ssh์ธ์ฆ์ ์ฅ์
3.git pull ๊ณผ git clone์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ?
- git clone์ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ์ ์ฅ์์ ๋ด์ฉ์ด ์๊ฒฉ ์ ์ฅ์์ ๋ด์ฉ๊ณผ ์ผ์นํด์ง๋ค.
- git pull์ ์ฌ์ฉํ๋ฉด ์๊ฒฉ์ ์ฅ์์ ๋ด์ฉ์ ๊ฐ์ ธ์ ํ์ฌ ๋ธ๋์น์ ๋ณํฉ(merge)๊น์ง ์คํํด์ค๋ค. ์ฆ ๊ธฐ์กด ์์ ๋ด์ฉ์ ์ ์งํ๋ฉด์ ์ต์ ์ฝ๋๋ก ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
* ๋ค์๋งํด์ git clone์ ์ด๊ธฐ ๋ค์ด๋ก๋์ ์ฌ์ฉํ๊ณ git pull์ ์ ๋ฐ์ดํธ ์ฌํญ ๋ฑ์ ๋ค์ด๋ก๋ ํ ๋ ์ฌ์ฉํ๋ค.