๐ [Git] ๋ช ๋ น์ด ์ ๋ฆฌ
![๐ [Git] ๋ช
๋ น์ด ์ ๋ฆฌ](/assets/img/thumbnail/git-thumbnail.png)
[Git] ๋ช ๋ น์ด ์ ๋ฆฌ
- 1. Git์ ๊ดํ์ฌ
- 2. Git ์ด๊ธฐ ์ค์
- 3. ๋ก์ปฌ ์ ์ฅ์ ์์ฑ ๋ฐ ์ฐ๊ฒฐ
- 4. ๋ณ๊ฒฝ ์ฌํญ ์ถ์
- 5. ์ปค๋ฐ
- 6. ๋ธ๋์น
- 7. ๋ณํฉ(Merge) & ์ถฉ๋ ํด๊ฒฐ
- 8. ์๊ฒฉ ์ ์ฅ์์์ ์ฐ๋
- 9. ๊ธฐํ ์ ์ฉํ ๋ช ๋ น์ด
- ๐ Reference
1. Git์ ๊ดํ์ฌ
1-1 Git์ด๋?
- Git์ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ํ์ผ ์์ ์ ์กฐ์จํ๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ด๋ค.
- ๋ถ์ฐ ํ์ ๊ด๋ฆฌ: Git์ ๋ถ์ฐํ ์์คํ ์ด๋ผ์, ๋ชจ๋ ์ฐธ์ฌ์๊ฐ ๋์ผํ ์ ์ฒด ์ด๋ ฅ์ ๋ณต์ ํด ๊ฐ๊ณ ์์ต๋๋ค. ์ธํฐ๋ท์ด ์ ๋๋ ์ํฉ์์๋ ๋ด ์ปดํจํฐ์ ์์ ํ ํ์คํ ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ์ด ๊ฐ๋ฅํ๊ณ , ๋์ค์ ๋ค์ ๋๊ธฐํํ ์ ์์ด์.
1-2 Git, GitHub์ฐจ์ด
- GitHub์ Git: GitHub๋ Git ์ ์ฅ์๋ฅผ ์จ๋ผ์ธ์์ ํธ์คํ ํด์ฃผ๋ ์๋น์ค์ ๋๋ค. ์ฝ๊ฒ ๋งํด, Git์ด ์๋์ฐจ๋ผ๋ฉด GitHub๋ ๊ณ ์๋๋ก ํด๊ฒ์ ๊ฐ์ ์ญํ ์ด์์. ๋ด ์ปดํจํฐ์ Git ์ ์ฅ์๋ฅผ GitHub์ ์ฌ๋ ค ๋๋ฉด, ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ณต์ ํ๊ฑฐ๋ ๋ฐฑ์ ํ ์ ์์ต๋๋ค. (GitHub ์ธ์๋ GitLab, Bitbucket ๊ฐ์ ์๋น์ค๋ ์์ด์.)
2. Git ์ด๊ธฐ ์ค์
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git config --global user.name "์ด๋ฆ" | ์ฌ์ฉ์ ์ด๋ฆ ์ค์ |
git config --global user.email "์ด๋ฉ์ผ" | ์ฌ์ฉ์ ์ด๋ฉ์ผ ์ค์ |
git config --global core.editor "์๋ํฐ" | ๊ธฐ๋ณธ ์๋ํฐ ์ค์ |
git config --list | ์ค์ ์ ๋ณด ํ์ธ |
3. ๋ก์ปฌ ์ ์ฅ์ ์์ฑ ๋ฐ ์ฐ๊ฒฐ
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git init | ๋ก์ปฌ ์ ์ฅ์ ์ด๊ธฐํ |
git clone [url] | ์๊ฒฉ ์ ์ฅ์ ๋ณต์ |
4. ๋ณ๊ฒฝ ์ฌํญ ์ถ์
| ๋ช
๋ น์ด | ์ค๋ช
| | โโโโโโโโโ- | โโโโโโโโโ | | git status
| ํ์ฌ ์ํ ํ์ธ | | git add [ํ์ผ๋ช
]
| ํน์ ํ์ผ ์คํ
์ด์ง | | git add .
| ์ ์ฒด ๋ณ๊ฒฝ ํ์ผ ์คํ
์ด์ง | | git reset [ํ์ผ๋ช
]
| ์คํ
์ด์ง์์ ํ์ผ ์ ๊ฑฐ | | git reset --hard HEAD^
| ์ต์ ์ปค๋ฐ ์ทจ์ | | git reset --hard HEAD~(์ซ์)
| ์ซ์๋ฅผ ์ ์ผ๋ฉด ํด๋น ์ซ์๋งํผ ์ต๊ทผ ์ปค๋ฐ๋ถํฐ ์ทจ์ | | git reset --soft
| ์คํ
์ด์ง ์ํ ์ ์ง | | git reset --mixed
| ์คํ
์ด์ง ์ทจ์ local ๋ณ๊ฒฝ ์ํ๋ก ์ ์ง |
โ ๏ธ`git reset๋ ๊ธฐ๋ก ์์ค์ ์ ๋ฐํ ์ ์์ผ๋ ์ ์คํ ์ฌ์ฉํ์ธ์.
5. ์ปค๋ฐ
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git commit -m "๋ฉ์์ง" | ์ปค๋ฐ ์์ฑ |
git commit -am "๋ฉ์์ง" | add + commit ํ๋ฒ์ ์ํ |
git log | ์ปค๋ฐ ๋ก๊ทธ ํ์ธ |
git log --oneline | ํ ์ค ์์ฝ ๋ก๊ทธ ํ์ธ |
git log --graph | ๋ธ๋์น์ ๋ณํฉ์ด๋ ฅ ๊ทธ๋ํํ |
6. ๋ธ๋์น
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git branch | ๋ธ๋์น ๋ชฉ๋ก ํ์ธ |
git branch [๋ธ๋์น๋ช
] | ๋ธ๋์น ์์ฑ |
git checkout [๋ธ๋์น๋ช
] | ๋ธ๋์น ์ด๋ |
git checkout -b [๋ธ๋์น๋ช
] | ๋ธ๋์น ์์ฑ ํ ์ด๋ |
git branch -d [๋ธ๋์น๋ช
] | ๋ธ๋์น ์ญ์ |
์ด๋ค ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด ์๋ก branch๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ์ฃผ๋ก ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋์ ์์์๋ (local) develop์ด๋ผ๋ ๊ฐ๋ฐ ์ ์ฉ branch๋ก๋ถํฐ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ์ํด ์๋ก (local) feature-branch๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ ํด๋น ๋ธ๋์น๋ก checkout ๊น์ง ์งํํฉ๋๋ค.
$ git checkout -b feature-branch develop
์ ํ ์ค์ ์๋์ ์ธ ์ค๊ณผ ๊ฐ์ ์๋ฏธ์ ๋๋ค.
$ git checkout develop # ๋ก์ปฌ ์ ์ฅ์์ develop ๋ธ๋์น๋ก ์ด๋
$ git branch feature-branch # ๋ก์ปฌ ์ ์ฅ์์ develop ๋ธ๋์น๋ก๋ถํฐ ๋ก์ปฌ์ feature-branch ์์ฑ
$ git checkout feature-branch # ๋ก์ปฌ ์ ์ฅ์์ feature-branch๋ก ์ด๋
$ git checkout -b [new_branch] [parent_branch]
์๊ฒฉ ์ ์ฅ์์ ๋ธ๋์น๊น์ง ํ์ธํ๋ ค๋ฉด -r ๋๋ -a๋ฅผ ์ต์ ์ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
$ git branch -r // -r์ remote (์๊ฒฉ) ๋ธ๋์น ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
$ git branch -a // -a๋ all(๋ชจ๋ ) ๋ธ๋์น ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
์๊ฒฉ ์ ์ฅ์์ ft-01 branch๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด -t ์ต์ ์ ์ฃผ๋ฉด ๋ฉ๋๋ค.
$ git checkout -t origin/ft-01
7. ๋ณํฉ(Merge) & ์ถฉ๋ ํด๊ฒฐ
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git merge [๋ธ๋์น๋ช
] | ํ์ฌ ๋ธ๋์น์ ๋ณํฉ |
git mergetool | ๋ณํฉ ๋๊ตฌ ์คํ |
git diff | ๋ณ๊ฒฝ์ ๋น๊ต |
8. ์๊ฒฉ ์ ์ฅ์์์ ์ฐ๋
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git remote add origin [url] | ์๊ฒฉ ์ ์ฅ์ ์ฐ๊ฒฐ |
git remote -v | ์ฐ๊ฒฐ๋ ์๊ฒฉ ์ ์ฅ์ ํ์ธ |
git push -u origin [๋ธ๋์น๋ช
] | ์๊ฒฉ ์ ์ฅ์๋ก ํธ์ |
git pull origin [๋ธ๋์น๋ช
] | ์๊ฒฉ ์ ์ฅ์์์ ํ |
git fetch | ์๊ฒฉ ๋ณ๊ฒฝ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ (๋ณํฉ์ ์ ํจ) |
9. ๊ธฐํ ์ ์ฉํ ๋ช ๋ น์ด
๋ช ๋ น์ด | ์ค๋ช |
---|---|
git stash | ์์ ์ค์ธ ๋ณ๊ฒฝ ์ฌํญ ์์ ์ ์ฅ |
git stash pop | ์์ ์ ์ฅํ ๋ด์ฉ ๋ณต์ |
git tag | ํ๊ทธ ๋ชฉ๋ก ํ์ธ |
git tag [ํ๊ทธ๋ช
] | ํ๊ทธ ์์ฑ |
git reflog | HEAD ์ด๋ ๊ธฐ๋ก ๋ณด๊ธฐ |