๋จ์ํ ๋ช ๋ น์ด๋ฅผ ๋์ดํ๋ ๊ฒ์ ๋์ด, ํ๋ก์ ํธ์ ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ํ๊ณ , ํ์ ํ๋ ๊ฒ
์ ์
- ์ํน ๋๋ ํ ๋ฆฌ (Working Directory):
- ๋ฌผ์ง์ ๋น์ : ์ฌ์ฉ์๋์ ์ปดํจํฐ ์ฑ ์ ์, ํ์ฌ ํผ์ณ๋๊ณ ์์ ์ค์ธ ์ค์ ํ๋ก์ ํธ ํ์ผ๋ค์ด ๋์ธ ๊ณต๊ฐ์ ๋๋ค. ์ฝ๋๋ฅผ ์์ ํ๊ณ , ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ชจ๋ ํ๋์ด ์ฌ๊ธฐ์ ์ผ์ด๋ฉ๋๋ค.
- ์ค์ฒด: ํ๋ก์ ํธ ํด๋ ๊ทธ ์์ฒด์ ๋๋ค. my-project/ ๊ฐ์ ๊ณณ์ด์ฃ .
- ์คํ
์ด์ง ์์ด๋ฆฌ์ด (Staging Area, ๋๋ Index):
- ๋ฌผ์ง์ ๋น์ : ์ฑ ์ ์์์ ์์ ํ ๊ฒฐ๊ณผ๋ฌผ ์ค, ๋ค์๋ฒ ๊ณต์ ๊ธฐ๋ก(์ปค๋ฐ)์ ํฌํจ์ํฌ ๊ฒ๋ค๋ง ๊ณจ๋ผ ์ฌ๋ ค๋๋ '๋ฐํ ์ค๋น๋'์ ๊ฐ์ต๋๋ค. ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ ํ๊บผ๋ฒ์ ๊ธฐ๋กํ๋ ๊ฒ์ด ์๋๋ผ, ์๋ฏธ ์๋ ๋จ์๋ก ์ ๋ณํ๋ ์ค๊ฐ ๋จ๊ณ์ ๋๋ค.
- ์ค์ฒด: .git ๋๋ ํ ๋ฆฌ ๋ด์ index ํ์ผ์ ์ด ์ ๋ณด๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. ์ด๋ค ํ์ผ์ ์ด๋ค ๋ด์ฉ์ด ๋ค์ ์ปค๋ฐ์ ํฌํจ๋ ์ง ๋ช ์ํ๋ ๋ชฉ๋ก๊ณผ ๊ฐ์ต๋๋ค.
- ๋ก์ปฌ ์ ์ฅ์ (Local Repository):
- ๋ฌผ์ง์ ๋น์ : ์ฌ์ฉ์๋ ๊ฐ์ธ ์์ฌ์ 'ํ๋ก์ ํธ ์ญ์ฌ ๊ธฐ๋ก ๋ณด๊ดํจ'์ ๋๋ค. ์คํ ์ด์ง ์์ด๋ฆฌ์ด์์ ์ค๋น๋ ๋ณ๊ฒฝ์ฌํญ๋ค์ด ๋ฒ์ ๋ณ๋ก ์ฐจ๊ณก์ฐจ๊ณก ์ค๋ ์ท ํํ๋ก ์ ์ฅ๋๋ ๊ณณ์ ๋๋ค. ๋ชจ๋ ๋ฒ์ ํ์คํ ๋ฆฌ์ ๋ธ๋์น ์ ๋ณด ๋ฑ์ด ์ด๊ณณ์ ์์ ํ๊ฒ ๋ณด๊ด๋ฉ๋๋ค.
- ์ค์ฒด: ํ๋ก์ ํธ ๋ฃจํธ ํด๋ ๋ด์ ์จ๊ฒจ์ง .git ๋๋ ํ ๋ฆฌ์ ๋๋ค. ์ด ์์๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค(์ค์ ํ์ผ ๋ณ๊ฒฝ ๋ด์ฉ๋ค), ์ฐธ์กฐ(๋ธ๋์น, ํ๊ทธ ํฌ์ธํฐ), ์ค์ ํ์ผ ๋ฑ์ด ๋ค์ด์์ต๋๋ค.
- ์๊ฒฉ ์ ์ฅ์ (Remote Repository):
- ๋ฌผ์ง์ ๋น์ : ์ฌ๋ฌ ์ฌ๋์ด ํจ๊ป ์ฌ์ฉํ๋ '์ค์ ๋์๊ด์ ํ๋ก์ ํธ ์๊ณ '์ ๊ฐ์ต๋๋ค. ๋ด ๋ก์ปฌ ์ ์ฅ์์ ๋ด์ฉ์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ๊ณต์ ํ๊ฑฐ๋, ๋ค๋ฅธ ์ฌ๋์ ์์ ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉํฉ๋๋ค. ์ฃผ๋ก GitHub, GitLab, Bitbucket ๊ฐ์ ์๋น์ค์ ์์นํฉ๋๋ค.
- ์ค์ฒด:๋คํธ์ํฌ ์ด๋๊ฐ์ ์๋ ๋ ๋ค๋ฅธ Git ์ ์ฅ์์ ๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น์ด
์์ ํ ์๋ก์ด ํ๋ก์ ํธ ์์ git init
mkdir my-awesome-project # ํ๋ก์ ํธ ํด๋ ์์ฑ
cd my-awesome-project # ํด๋๋ก ์ด๋
git init # ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ์ด๊ธฐํ
๊ธฐ์กด ํ๋ก์ ํธ ์ฐธ์ฌ git clone
git clone https://github.com/some-user/their-awesome-project.git
๋ณ๊ฒฝ ์ํ ํ์ธ git status
์ปค๋ฐํ ๋ณ๊ฒฝ์ฌํญ ์ ๋ณ : ์คํ ์ด์ง ๊ตฌ์ญ์ผ๋ก ์ด๋ git add
git add main.py # main.py ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ๋ง ์คํ
์ด์ง
git add utils.py # utils.py ํ์ผ์ ์๋ก ์ถ์ ํ๊ณ ์คํ
์ด์ง
# ๋๋
git add . # ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ(์์ , ์ ํ์ผ)์ ์คํ
์ด์ง
๋ก์ปฌ ์ ์ฅ์์ ๊ธฐ๋ก git commit
git commit -m "Add feature X and utility functions"
์ ๋ธ๋์น ์์ฑ git branch ๋ธ๋์น์ด๋ฆ
git branch feature/new-login # 'feature/new-login'์ด๋ผ๋ ์ด๋ฆ์ ๋ธ๋์น ์์ฑ
๋ธ๋์น ์ ํ git switch ๋ธ๋์น๋ช
git checkout feature/new-login
# ๋๋ (๋ ์ต์ , ๋ช
ํํ ๋ช
๋ น์ด)
git switch feature/new-login
์ํน ๋๋ ํ ๋ฆฌ์ ํ์ผ๋ค์ด feature/new-login ๋ธ๋์น์ ๋ง์ง๋ง ์ปค๋ฐ ์ํ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค
์ฃผ ๋ธ๋์น๋ก ๋ณต๊ท ๋ฐ ๋ณํฉ ์ค๋น (main์ผ๋ก ๋์์์ ํฉ์นจ)
git switch main # main ๋ธ๋์น๋ก ์ ํ
๋ธ๋์น ๋ณํฉ git merge ๋ณํฉํ ๋ธ๋์น๋ช
git merge feature/new-login
- Fast-forward merge: main ๋ธ๋์น๊ฐ feature/new-login ๋ธ๋์น๊ฐ ๋ถ๊ธฐํ ์ดํ๋ก ์๋ฌด๋ฐ ์ถ๊ฐ ์ปค๋ฐ์ด ์์๋ค๋ฉด, main ๋ธ๋์น ํฌ์ธํฐ๋ ๋จ์ํ feature/new-login ๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋ ์ต์ ์ปค๋ฐ์ผ๋ก "๋นจ๋ฆฌ ๊ฐ๊ธฐ"์ฒ๋ผ ์ด๋ํฉ๋๋ค. ํ์คํ ๋ฆฌ๊ฐ ๋จ์ํ๊ฒ ์ง์ ์ผ๋ก ์ด์ด์ง๋๋ค.
- 3-way merge (Merge commit): main ๋ธ๋์น์๋ ๊ทธ๋์ ๋ค๋ฅธ ๋ณ๊ฒฝ์ฌํญ์ด ์์๋ค๋ฉด (๋ค๋ฅธ ์ปค๋ฐ์ด ์กด์ฌ), Git์ ๋ ๋ธ๋์น์ ๋ณ๊ฒฝ์ฌํญ์ ํฉ์น ์๋ก์ด **๋จธ์ง ์ปค๋ฐ(merge commit)**์ ์์ฑํฉ๋๋ค. ์ด ๋จธ์ง ์ปค๋ฐ์ ๋ ๊ฐ์ ๋ถ๋ชจ ์ปค๋ฐ(ํ๋๋ main์ ์ต์ ์ปค๋ฐ, ๋ค๋ฅธ ํ๋๋ feature/new-login์ ์ต์ ์ปค๋ฐ)์ ๊ฐ์ง๋๋ค. main ๋ธ๋์น ํฌ์ธํฐ๋ ์ด ์๋ก์ด ๋จธ์ง ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค. ํ์คํ ๋ฆฌ์ ๊ฐ์ง๊ฐ ํฉ์ณ์ง๋ ๋ชจ์์ด ๋ํ๋ฉ๋๋ค.
- ์ถฉ๋ (Conflict): ๋ง์ฝ main ๋ธ๋์น์ feature/new-login ๋ธ๋์น์์ ๊ฐ์ ํ์ผ์ ๊ฐ์ ๋ถ๋ถ์ ๋ค๋ฅด๊ฒ ์์ ํ๋ค๋ฉด, Git์ ์๋์ผ๋ก ๋ณํฉํ ์ ์์ด ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค.
- ๋ฌผ์ง์ ๋ณํ: ์ถฉ๋์ด ๋ฐ์ํ ํ์ผ์๋ <<<<<<<, =======, >>>>>>> ๊ฐ์ ๋ง์ปค๊ฐ ํ์๋ฉ๋๋ค.
- ์ฌ์ฉ์๋ ์ด ํ์ผ์ ์ง์ ์ด์ด ์ถฉ๋ ๋ถ๋ถ์ ์์ ํ ํ, ๋ค์ git add [์ถฉ๋๋_ํ์ผ] -> git commit (์ด๋ -m ์ต์ ์์ด ์คํํ๋ฉด Git์ด ๊ธฐ๋ณธ ๋จธ์ง ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ์)์ ํตํด ๋ณํฉ์ ์๋ฃํด์ผ ํฉ๋๋ค.
๋ธ๋์น ์ญ์ git branch -d ๋ธ๋์น ์ด๋ฆ
git branch -d feature/new-login # ๋ณํฉ๋ ๋ธ๋์น ์ญ์
# ๊ฐ์ ์ญ์ (๋ณํฉ๋์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ด๋ ์ญ์ ): git branch -D feature/wip-branch
์๊ฒฉ ์ ์ฅ์์ ๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ ์ ๋ก๋ git push ๋ณ์นญ ๋ธ๋์น๋ช
git push origin main # ๋ก์ปฌ main ๋ธ๋์น์ ๋ด์ฉ์ origin ์๊ฒฉ ์ ์ฅ์์ main ๋ธ๋์น๋ก ํธ์
git push origin feature/new-login # ๋ก์ปฌ feature/new-login ๋ธ๋์น๋ฅผ origin์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ํธ์ (์๊ฒฉ์ ํด๋น ๋ธ๋์น๊ฐ ์๋ค๋ฉด ์๋ก ์์ฑ)
- ์ฃผ์: ๋ง์ฝ ๋ก์ปฌ์์ ํธ์ํ๋ ค๋ ๋ธ๋์น์ ์๊ฒฉ ๋ฒ์ ์ด ๋ด๊ฐ ๋ชจ๋ฅด๋ ์ฌ์ด์ ๋ค๋ฅธ ์ฌ๋์ ์ํด ์ ๋ฐ์ดํธ๋์๋ค๋ฉด (์ฆ, ์๊ฒฉ ๋ธ๋์น์ ๋ด๊ฐ ๊ฐ์ง์ง ์์ ์ปค๋ฐ์ด ์๋ค๋ฉด), ํธ์๊ฐ ๊ฑฐ๋ถ๋ ์ ์์ต๋๋ค (non-fast-forward). ์ด ๊ฒฝ์ฐ ๋จผ์ git pull์ ํตํด ์๊ฒฉ ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์ ธ์ ๋ณํฉํ ํ ๋ค์ ํธ์ํด์ผ ํฉ๋๋ค.
์๊ฒฉ ์ ์ฅ์์ ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ git fetch ๋ณ์นญ
git fetch origin
์ต์ ๋ณ๊ฒฝ์ฌํญ์ ๋ด ๋ก์ปฌ ์ ์ฅ์๋ก ๊ฐ์ ธ์ค๊ณ ์ถ์ง๋ง, ์์ง ๋ด ์ํน ๋๋ ํ ๋ฆฌ๋ ํ์ฌ ๋ธ๋์น์ ๋ฐ๋ก ๋ณํฉํ๊ณ ์ถ์ง๋ ์์ ๋ ์ฌ์ฉ
์๊ฒฉ ์ ์ฅ์ ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ ธ์์ ๋ณํฉํ๊ธฐ git pull ๋ณ์นญ ๋ธ๋์น๋ช
git pull origin main # origin ์๊ฒฉ ์ ์ฅ์์ main ๋ธ๋์น ๋ด์ฉ์ ๊ฐ์ ธ์ ํ์ฌ ๋ก์ปฌ ๋ธ๋์น์ ๋ณํฉ
GitHub/GitLab ๋ฑ ํ๋ซํผ์์์ ํ์ ํ๋ฆ
- ์ฃผ ์ ์ฅ์(upstream ๋๋ origin)๋ฅผ ์์ ์ ๊ณ์ ์ผ๋ก Forkํฉ๋๋ค. (ํ๋ซํผ ๊ธฐ๋ฅ)
- Forkํ ๊ฐ์ธ ์ ์ฅ์๋ฅผ ๋ก์ปฌ๋ก cloneํฉ๋๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์์ ์ ์ํด ๋ก์ปฌ์์ ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์์ ํฉ๋๋ค (feature/my-fix).
- ์์ ํ ๋ธ๋์น๋ฅผ ์์ ์ Fork๋ ์๊ฒฉ ์ ์ฅ์๋ก pushํฉ๋๋ค (git push origin feature/my-fix).
- GitHub/GitLab ์น์ฌ์ดํธ์์, Forkํ ์ ์ฅ์์ feature/my-fix ๋ธ๋์น์์ ์๋ณธ ์ฃผ ์ ์ฅ์์ main ๋ธ๋์น๋ก Pull Request (PR) ๋๋ **Merge Request (MR)**๋ฅผ ์์ฑํฉ๋๋ค.
- ํ๋ก์ ํธ ๊ด๋ฆฌ์ ๋๋ ๋ค๋ฅธ ํ์๋ค์ด PR/MR์ ๋ณด๊ณ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์งํํ๊ณ , ์๊ฒฌ์ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
- ๋ฆฌ๋ทฐ์์ ์์ ์์ฒญ์ด ์์ผ๋ฉด, ๋ก์ปฌ feature/my-fix ๋ธ๋์น์์ ์ถ๊ฐ ์ปค๋ฐ์ ํ๊ณ ๋ค์ pushํ๋ฉด PR/MR์ ์๋์ผ๋ก ๋ฐ์๋ฉ๋๋ค.
- ๋ชจ๋ ๊ฒํ ๊ฐ ๋๋๊ณ ์น์ธ๋๋ฉด, ํ๋ก์ ํธ ๊ด๋ฆฌ์๊ฐ ์น์ฌ์ดํธ์์ PR/MR์ Mergeํฉ๋๋ค. ์ด๋ ์ค์ ๋ณํฉ ์์ ์ ํ๋ซํผ ์๋ฒ์์ ์ด๋ฃจ์ด์ง๋๋ค.
- ์ดํ ๋ก์ปฌ main ๋ธ๋์น๋ฅผ ์๋ณธ ์ฃผ ์ ์ฅ์์ main๊ณผ ๋๊ธฐํํ๊ธฐ ์ํด git pull upstream main (์๋ณธ ์ฃผ ์ ์ฅ์๋ฅผ upstream์ผ๋ก ๋ฑ๋กํด๋๋ค๋ฉด) ๋ฑ์ ์คํํฉ๋๋ค.
๊ธฐํ ์ ์ฉํ ๋๊ตฌ๋ค (๋ฌผ์ง์ ๊ด์ )
- .gitignore ํ์ผ:
- ํ๋ก์ ํธ ๋ฃจํธ์ ์ด ํ์ผ์ ๋ง๋ค๊ณ , ๋ฒ์ ๊ด๋ฆฌ์์ ์ ์ธํ๊ณ ์ถ์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ ํจํด(์: *.log, build/, .env)์ ์ ์ด๋๋ฉด, git add . ์คํ ์ Git์ด ์ด ํจํด์ ํด๋นํ๋ ํ์ผ๋ค์ "๋ชป ๋ณธ ์ฒ" ๋ฌด์ํฉ๋๋ค. ์ฆ, ์คํ ์ด์ง ์์ด๋ฆฌ์ด์ ์ฌ๋ผ๊ฐ์ง ์์ต๋๋ค.
- git log --graph --oneline --decorate --all:
- ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ธ๋์น ๊ตฌ์กฐ์ ํจ๊ป ํ ์ค๋ก ๊น๋ํ๊ฒ ์๊ฐํํ์ฌ ๋ณด์ฌ์ค๋๋ค. ๋ธ๋์น ํฌ์ธํฐ๋ค์ด ์ด๋ป๊ฒ ๊ฐ ์ปค๋ฐ๋ค์ ๊ฐ๋ฆฌํค๊ณ , ์ด๋ป๊ฒ ๊ฐ๋ผ์ง๊ณ ํฉ์ณ์ก๋์ง ํ๋์ ํ์ ํ ์ ์์ต๋๋ค.
- git diff:
- git diff: ์ํน ๋๋ ํ ๋ฆฌ์ ์คํ ์ด์ง ์์ด๋ฆฌ์ด ๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ ๋น๊ต.
- git diff --staged (๋๋ git diff --cached): ์คํ ์ด์ง ์์ด๋ฆฌ์ด์ ๋ง์ง๋ง ์ปค๋ฐ ๊ฐ์ ๋ณ๊ฒฝ ๋ด์ฉ ๋น๊ต.
- git diff [๋ธ๋์น1] [๋ธ๋์น2]: ๋ ๋ธ๋์น ๊ฐ์ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ ์ฐจ์ด ๋น๊ต.
- ํ์ผ ๋ด์ฉ์ ์ด๋ค ์ค์ด ์ถ๊ฐ/์ญ์ /๋ณ๊ฒฝ๋์๋์ง ๋ณด์ฌ์ค๋๋ค.
- git stash:
- ์ํฉ: ํ์ฌ ๋ธ๋์น์์ ์์ ์ ํ๋ ์ค, ์์ง ์ปค๋ฐํ๊ธฐ๋ ์ ๋งคํ๋ฐ ๋ค๋ฅธ ๋ธ๋์น๋ก ๊ธํ๊ฒ ์ ํํด์ผ ํ ๋.
- ๋ช ๋ น์ด: git stash save "์์ ์์ ๋ด์ฉ"
- ๋ฌผ์ง์ ๋ณํ: ์ํน ๋๋ ํ ๋ฆฌ์ ์คํ ์ด์ง ์์ด๋ฆฌ์ด์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ํน๋ณํ "์คํ์(stash)"๋ผ๋ ์์ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฅํ๊ณ , ์ํน ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง์ง๋ง ์ปค๋ฐ ์ํ๋ก ๊นจ๋ํ๊ฒ ๋๋๋ฆฝ๋๋ค. .git ๋ด๋ถ์ ์ด ์์ ๋ณ๊ฒฝ์ฌํญ์ด ์คํ์ฒ๋ผ ์์ ๋๋ค.
- ๋์ค์ git stash pop ๋๋ git stash apply๋ก ์ ์ฅํ๋ ๋ณ๊ฒฝ์ฌํญ์ ๋ค์ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
โจ git switch vs git checkout: ๋ฌด์์ด ๋ค๋ฅผ๊น์? โจ
git switch๋ git checkout์ด ๊ฐ์ง ์ฌ๋ฌ ๊ธฐ๋ฅ ์ค ๋ธ๋์น ์ ํ๊ณผ ๊ด๋ จ๋ ์์ ์ ๋ณด๋ค ๋ช ํํ๊ณ ์์ ํ๊ฒ ์ํํ๊ธฐ ์ํด Git 2.23 ๋ฒ์ ๋ถํฐ ๋์ ๋ ๋ช ๋ น์ด์ ๋๋ค.
1. git checkout์ ๊ณผ๊ฑฐ์ ํ์ฌ: ๋ง๋ฅ ๋๊ตฌ์ ๋ช ๊ณผ ์
git checkout์ Git์ ์ญ์ฌ์ ํจ๊ป ํด์จ ๋งค์ฐ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ๋ช ๋ น์ด์ ๋๋ค. ํ์ง๋ง ๊ทธ๋งํผ ๋ค์ํ ์ญํ ์ ์ํํ์ต๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ๋ค:
- ๋ธ๋์น ์ ํ: git checkout <์ด๋ํ _๋ธ๋์น๋ช > : HEAD ํฌ์ธํฐ๊ฐ ์ง์ ๋ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝ๋๊ณ , ์ํน ๋๋ ํ ๋ฆฌ์ ์ธ๋ฑ์ค(์คํ ์ด์ง ์์ด๋ฆฌ์ด)๊ฐ ํด๋น ๋ธ๋์น์ ์ต์ ์ปค๋ฐ ์ํ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
- ํ์ผ ๋ณต์ (์ํน ๋๋ ํ ๋ฆฌ): git checkout -- <ํ์ผ๊ฒฝ๋ก> : ์ํน ๋๋ ํ ๋ฆฌ์ ํน์ ํ์ผ์ ๋ง์ง๋ง ์ปค๋ฐ(๋๋ ์คํ ์ด์ง๋) ์ํ๋ก ๋๋๋ฆฝ๋๋ค.
- ํ์ผ ๋ณต์ (์คํ ์ด์ง ์์ด๋ฆฌ์ด์์): ๊ณผ๊ฑฐ์๋ git reset HEAD <ํ์ผ๊ฒฝ๋ก> ํ git checkout -- <ํ์ผ๊ฒฝ๋ก> ์กฐํฉ์ ์ฌ์ฉํ๊ฑฐ๋, ๋ค๋ฅธ ๋ณต์กํ ๋ฐฉ์์ด ํ์ํ์ต๋๋ค.
- ํน์ ์ปค๋ฐ์ผ๋ก ์ด๋ (Detached HEAD ์ํ): git checkout <์ปค๋ฐ_ํด์> ๋๋ git checkout <ํ๊ทธ๋ช > : HEAD๊ฐ ํน์ ์ปค๋ฐ์ ์ง์ ๊ฐ๋ฆฌํค๊ฒ ๋์ด "Detached HEAD" ์ํ๊ฐ ๋ฉ๋๋ค. ์ํน ๋๋ ํ ๋ฆฌ์ ์ธ๋ฑ์ค๋ ํด๋น ์ปค๋ฐ ์ํ๋ก ๋ฐ๋๋๋ค. ์ด ์ํ์์์ ์ปค๋ฐ์ ์ด๋ค ๋ธ๋์น์๋ ์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
- ๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ ํ: git checkout -b <์_๋ธ๋์น๋ช > [์์์ _์ปค๋ฐ/๋ธ๋์น] : ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ์ฆ์ ๊ทธ ๋ธ๋์น๋ก HEAD๋ฅผ ์ด๋์ํต๋๋ค.
- ๋ฌธ์ ์ : ํ๋์ ๋ช ๋ น์ด๊ฐ ๋๋ฌด ๋ง์ ๋งฅ๋ฝ์์ ๋ค๋ฅด๊ฒ ๋์ํ์ฌ, ํนํ ์ด๋ณด ์ฌ์ฉ์์๊ฒ ํผ๋์ ์ฃผ๊ฑฐ๋ ์๋์น ์์ ์ค์๋ฅผ ์ ๋ฐํ ๊ฐ๋ฅ์ฑ์ด ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ธ๋์น ์ด๋ฆ๊ณผ ํ์ผ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ, Git์ ์ฌ์ฉ์์ ์๋๋ฅผ ๋ช ํํ ํ์ ํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. (๋ฌผ๋ก --๋ฅผ ์ฌ์ฉํด ํ์ผ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ๋ฉด ํด๊ฒฐ๋์ง๋ง์.)
2. git switch์ ๋ฑ์ฅ: ๋ช ํ์ฑ์ ์ํ ๋ถ๋ฆฌ
์ด๋ฌํ ํผ๋์ ์ค์ด๊ณ ์ Git ๊ฐ๋ฐํ์ git checkout์ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ ์ง๊ด์ ์ธ ์ ๋ช ๋ น์ด๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ์ค ํ๋๊ฐ ๋ฐ๋ก git switch์ ๋๋ค.
-
- ์ฃผ์ ๋ชฉ์ : ์ค์ง **๋ธ๋์น์ ๊ด๋ จ๋ ์์ (์์ฑ, ์ ํ)**์๋ง ์ง์คํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ๋ค:
- ๋ธ๋์น ์ ํ: git switch <์ด๋ํ _๋ธ๋์น๋ช
>
- ๋ฌผ์ง์ ๋ณํ: git checkout <๋ธ๋์น๋ช >๊ณผ ๋์ผํ๊ฒ HEAD ์ด๋, ์ํน ๋๋ ํ ๋ฆฌ/์ธ๋ฑ์ค ์ ๋ฐ์ดํธ.
- ์์ ์ฅ์น: ๋ง์ฝ ์ ํํ๋ ค๋ ๋ธ๋์น๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด, ํ์ผ ์ด๋ฆ์ผ๋ก ์ฐฉ๊ฐํ์ฌ ํ์ผ์ ๋ณต์ํ๋ ค๋ ์๋๋ฅผ ํ์ง ์๊ณ ๋ช ํํ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
- ๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ ํ: git switch -c <์_๋ธ๋์น๋ช
> ๋๋ git switch --create <์_๋ธ๋์น๋ช
> [์์์ _์ปค๋ฐ/๋ธ๋์น]
- git checkout -b์ ๋์ผํ ๊ธฐ๋ฅ์ ๋๋ค. ์ต์ ์ด๋ฆ(-c, --create)์ด ๋ ๋ช ์์ ์ ๋๋ค.
- ์ด์ ๋ธ๋์น๋ก ๋น ๋ฅด๊ฒ ์ ํ: git switch -
- git checkout - ์ ๋์ผํ๊ฒ, ๋ฐ๋ก ์ด์ ์ ์์ ํ๋ ๋ธ๋์น๋ก ๋์๊ฐ๋๋ค.
- Detached HEAD ์ํ๋ก ์ ํ (๋ช
์์ ): git switch --detach <์ปค๋ฐ_ํด์_๋๋_ํ๊ทธ๋ช
>
- git checkout <์ปค๋ฐ_ํด์>์ ์ ์ฌํ์ง๋ง, --detach ์ต์ ์ ํตํด ์ฌ์ฉ์์ ์๋๋ฅผ ๋ช ํํ ํฉ๋๋ค.
- ๊ฐ์ ์ ํ (๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ ๋ฌด์): git switch -f <๋ธ๋์น๋ช
> ๋๋ git switch --force <๋ธ๋์น๋ช
> (์ฃผ์ํด์ ์ฌ์ฉ!)
- ์ด ๊ธฐ๋ฅ์ git checkout -f ์ ์ ์ฌํ๊ฒ, ์ปค๋ฐ๋์ง ์์ ๋ก์ปฌ ๋ณ๊ฒฝ์ฌํญ์ด ์๋๋ผ๋ ๊ฐ์ ๋ก ๋ธ๋์น๋ฅผ ์ ํํ๊ณ ๋ณ๊ฒฝ์ฌํญ์ ๋ฎ์ด์ธ ์ ์์ต๋๋ค. (๋ฐ์ดํฐ ์ ์ค ์ํ)
- ๋ธ๋์น ์ ํ: git switch <์ด๋ํ _๋ธ๋์น๋ช
>
3. git restore์ ๋ฑ์ฅ: ํ์ผ ๋ณต์์ ๋ช ํํ
git switch์ ํจ๊ป ๋ฑ์ฅํ ๋ ๋ค๋ฅธ ์ค์ํ ๋ช ๋ น์ด๋ git restore์ ๋๋ค. ์ด ๋ช ๋ น์ด๋ git checkout์ด ๋ด๋นํ๋ "ํ์ผ ๋ณต์" ๊ธฐ๋ฅ์ ๊ฐ์ ธ์์ต๋๋ค.
-
- ์ฃผ์ ๋ชฉ์ : ์ํน ๋๋ ํ ๋ฆฌ์ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ฆฌ๊ฑฐ๋, ์คํ ์ด์ง ์์ด๋ฆฌ์ด์์ ํ์ผ์ ๋ด๋ฆฌ๋(unstage) ์์ ์ ์ง์คํฉ๋๋ค.
- ์ฃผ์ ๊ธฐ๋ฅ๋ค:
- ์ํน ๋๋ ํ ๋ฆฌ ํ์ผ ๋ณ๊ฒฝ์ฌํญ ๋๋๋ฆฌ๊ธฐ: git restore <ํ์ผ๊ฒฝ๋ก>
- git checkout -- <ํ์ผ๊ฒฝ๋ก>์ ์ ์ฌํ๊ฒ, ์ํน ๋๋ ํ ๋ฆฌ์ ํ์ผ์ ๋ง์ง๋ง ์ปค๋ฐ ๋๋ ์คํ ์ด์ง๋ ์ํ๋ก ๋๋๋ฆฝ๋๋ค.
- ์คํ
์ด์ง๋ ํ์ผ ๋ด๋ฆฌ๊ธฐ (Unstage): git restore --staged <ํ์ผ๊ฒฝ๋ก>
- git reset HEAD <ํ์ผ๊ฒฝ๋ก>์ ๋์ผํ ํจ๊ณผ์ ๋๋ค. ์คํ ์ด์ง ์์ด๋ฆฌ์ด์์ ํ์ผ์ ๋ด๋ฆฌ๊ณ , ๋ณ๊ฒฝ์ฌํญ์ ์ํน ๋๋ ํ ๋ฆฌ์ ๋จ๊ฒจ๋ก๋๋ค.
- ์ํน ๋๋ ํ ๋ฆฌ ํ์ผ ๋ณ๊ฒฝ์ฌํญ ๋๋๋ฆฌ๊ธฐ: git restore <ํ์ผ๊ฒฝ๋ก>
4. ํต์ฌ ์ฐจ์ด์ ์์ฝ

์ฌ์ง ์ค๋ช ์ ์ ๋ ฅํ์ธ์.
5. ๊ถ์ฅ ์ฌ์ฉ๋ฒ
-
- ๋ธ๋์น๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ํํ ๋๋ git switch๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ ๋๋๋ฆฌ๊ฑฐ๋ ์คํ ์ด์ง์ ์ทจ์ํ ๋๋ git restore๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- git checkout์ ์ฌ์ ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํํ ์ ์์ง๋ง, ์๋ก์ด ๋ช ๋ น์ด๋ค์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ช ๋ น์ด์ ์๋๋ฅผ ๋ ๋ช ํํ ํ๊ณ ์ค์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ๋ง์น ์ ๋ง๋ค์ด์ง ์ ๋ฌธ ๊ณต๊ตฌ๊ฐ ์ฌ๋ฌ ์์ ์ ์ด์คํ๊ฒ ํ๋ ๋ง๋ฅ ๊ณต๊ตฌ๋ณด๋ค ํน์ ์์ ์ ๋ ํจ์จ์ ์ด๊ณ ์์ ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
'๐ป FE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
children, childNodes (0) | 2025.05.16 |
---|---|
querySelectorAll('li'), getElementsByTagName('li') (0) | 2025.05.14 |
์์ฑ , ํ๋กํผํฐ (0) | 2025.05.14 |
์ ๋ฏธ๋์ด์์๋ํ (0) | 2025.05.13 |
๊ธฐ๋ฆฌ๊ธฐ๋ฆฌ๊ธฐ๋ฆฌ๊น ! (0) | 2025.05.13 |