Git Tips and Tricks
Git์ ๋ฌ์ธ์ด ๋์
1. Git Basics
(1) Git์ผ๋ก ํ๋ก์ ํธ ๊ด๋ฆฌ ์์ : git init
git init
์์ ์ด ์์ผ๋ก ํ์ตํ ๋ด์ฉ์ ๊ธฐ๋กํ
TIL
ํด๋๋ฅผ ํ๋ ์์ฑํ๋ค. ์ด๋ ํด๋น ํด๋๋ ์ต์๋จ์ ์์ฑํ๋คgit bash
์์TIL
ํด๋๋ก ์ด๋ํ ์ดํ์ ์๋์ ๋ช ๋ น์ด๋กgit
๊ด๋ฆฌ๋ฅผ ์์ํ๋ค
(2) Commit์ ์ํ Staging : git add
git add
ํ์ฌ ์ฝ๋ ์ํ์ ์ค๋ ์ท์ ์ฐ๊ธฐ ์ํ ํ์ผ ์ ํ (== Staging Area์ ํ์ผ ์ถ๊ฐ)
(3) ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ค๋
์ท ์ ์ฅ : git commit
git commit
ํ์ฌ ์ํ์ ๋ํ ์ค๋ ์ท์
commit
ํ์ฌ, ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์งํํ๋ค.
(4) ์๊ฒฉ ์ ์ฅ์ ์ ๋ณด ์ถ๊ฐ : git remote
git remote
Github ์๊ฒฉ(remote) ์ ์ฅ์(repository)๋ฅผ ์์ฑํ๊ณ
TIL
ํด๋์ ์ฐ๊ฒฐํ๋ค์๋ก์ด ์๊ฒฉ ์ ์ฅ์๊ฐ ์ถ๊ฐ๋ ๋๋ง ์ ๋ ฅํ๋ค.
(5) ๋ก์ปฌ ์ ์ฅ์๋ก ์ฝ๋ ๋ถ๋ฌ์ค๊ธฐ git pull
git pull
Github ์๊ฒฉ ์ ์ฅ์์ ์์ ์ฝ๋๋ฅผ ๋ถ๋ฌ์ค๊ณ ๊ฐ
branch
์ ํด๋น๋๋commit
๋ค์ ์ ์ฉํ๋ค.
(5) ์๊ฒฉ ์ ์ฅ์๋ก ์ฝ๋ git push
git push
์ต์ข ์ ์ผ๋ก Github ์๊ฒฉ ์ ์ฅ์์ push ํ๋ค.
Tip
: ๋ง์ฝ ํ์ฌ branch๊ฐ push ํ๋ ค๋ repo์ branch ์ด๋ฉด $ git push
๋ช
๋ น์ด๋ง ์
๋ ฅํด๋ ๋๋ค!
(6) ๊ทธ ์ธ ๋ช
๋ น์ด
ํ์ฌ
git
์ ์ํ๋ฅผ ์กฐํgit status
๋ฒ์ ๊ด๋ฆฌ ์ด๋ ฅ์ ์กฐํ
git
์ค์ (user.name & user.email) : ์ต์ด 1ํ ์ค์
Undo
git add
before commit
2. README.md
README.md
์๊ฒฉ(remote) ์ ์ฅ์(repository)์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ๋งํฌ๋ค์ด ๋ฌธ์. ์ผ๋ฐ์ ์ผ๋ก ํด๋น ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ๋ฑ์ ๊ธฐ์ฌํ๋ค.
(1) README.md
ํ์ผ ์์ฑ
README.md
ํ์ผ ์์ฑREADME.md
ํ์ผ์TIL
ํด๋ (์ต์๋จ)์ ์์ฑํ๋ค. ์ด๋ฆ์ ๋ฐ๋์ README.md๋ก ์ค์ ํ๋ค.
(2) (์์ ๋ง์) ์์น์ ๋ํ ๊ฐ๋จํ ๋ด์ฉ ์ถ๊ฐ
๋งํฌ๋ค์ด ์์ฑ๋ฒ pdf์์ ๋ฐฐ์ฐ๊ณ ์ค์ตํ ๋ด์ฉ์ ํ ๋๋ก
README.md
ํ์ผ์ ์์ฑํ๋ค.ํ์์ ์์ ๋กญ๊ฒ ์์ฑํ๋ ๋งํฌ๋ค์ด ๋ฌธ๋ฒ(์๋ฏธ๋ก ์ )์ ์ง์ผ์ ์์ฑํ๋ค.
(3) ์ ์ฅ ํ ๋ฒ์ ๊ด๋ฆฌ : add
, commit
, push
add
, commit
, push
์์ฑ์ด ์๋ฃ๋๋ฉด ์๋์ ๋ช ๋ น์ด๋ฅผ ํตํด commit ์ด๋ ฅ์ ๋จ๊ธฐ๊ณ ์๊ฒฉ ์ ์ฅ์๋ก push ํ๋ค.
3. Shared Repository
Fast forward merge ์ค์ต
4. ํน์ ์์ ์ผ๋ก ๋์๊ฐ๊ธฐ
ํน์ commit์ ๊ธฐ์ค์ผ๋ก ๋์๊ฐ๊ธฐ
test branch ๋ง๋ค๋ฉด์ ์ด๋ํ๊ธฐ
reference log ํ์ธ
์ด๋์ head ์๋์ง ํ์ธ
๋ค์ test branch๋ก ๋์๊ฐ๊ธฐ
5. ์๊ฒฉ ์ ์ฅ์์ ์ฌ๋ผ๊ฐ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ
๋ฐฉ๋ฒ 1) Local์์ commit ๋๋๋ฆฐ ํ ๊ฐ์ Push ํ๊ธฐ
$ git reset
์ผ๋ก commit ๋๋๋ฆฌ๊ธฐ
-f
or--force
๋ช ๋ น์ด๋ก ๊ฐ์ ๋ก Push ํ๊ธฐ
๋ฐฉ๋ฒ 2) git revert
์ฌ์ฉํ๊ธฐ
git revert
์ฌ์ฉํ๊ธฐ๋ฐฉ๋ฒ 1์ ์๊ฒฉ ์ ์ฅ์ commit history๋ฅผ ๊ฐ์ ๋ก ์กฐ์ํ๋ค๋ ๋ฌธ์ ์ ์ด ์์
but,
git revert
๋ฅผ ์ฌ์ฉํ๋ฉด commit์ ๋๋๋ฆฌ๋ ์์ ๋ ํ๋์ commit์ผ๋ก ๊ฐ์ฃผํ์ฌ commit history์ ์ถ๊ฐํ๊ฒ ๋จ
ํน์ commit์์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ฑฐํ๋ ๋ ๋ค๋ฅธ commit ์์ฑํ๊ธฐ
+
master
branch์ ์๋ ๋ด์ฉ์ ์๋์ผ๋ก ๋ฐฐํฌ๊ฐ ๋จmaster
๋ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ
ํน์ branch ๋ง clone ํ๊ธฐ
์๊ฒฉ ์ ์ฅ์์ ํน์ branch ๊ฐ์ ธ์ค๊ธฐ
์ฐ์ ์๊ฒฉ ์ ์ฅ์์ ์ด๋ค branch ์๋์ง ํ์ธ
์๊ฒฉ์ ์ฅ์ + ๋ก์ปฌ branch ํ์ธ
์๊ฒฉ ์ ์ฅ์์ branch๋ฅผ ๋์ผํ ์ด๋ฆ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
์๊ฒฉ ์ ์ฅ์์ branch๋ฅผ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ๊ฐ์ ธ์ค๊ธฐ
Pushํ์ง ์์ Commit message ์์ ํ๊ธฐ
git fetch
git fetch
remote branch ๊ฐ ์ด๋๊น์ง ๊ฐ์๋์ง ํ์ธ ๊ฐ๋ฅ
git pull == git fetch && merge
git rebase
git rebase
์ฌ ๋ฐฐ์นํ๊ธฐ
๋ค์
-i
๋ฅผ ๋ถ์ด๋ฉด interactive ํ๊ฒ (๋ํํ์ผ๋ก) ์คํ ๊ฐ๋ฅ
6. Submodule ์ฌ์ฉํ๊ธฐ
Submodule ์ด๋?
Git main repo ์์ ๋ค๋ฅธ sub repo๊ฐ ์๋ ๊ฒ
main repo์์๋ sub repo๋ฅผ ๊ด๋ฆฌํ์ง ์๋๋ค!
Submodule์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ ๊ฐ์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ logic์ ๊ณต์ ํ ์ ์๋ค!
Add Submodule
์ดํ์ ๋ฐ๋ก
git add
์์ด commit ํ ์ ์์
Update Submodule
Update main repo
main repo root์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด main repo ๊ฐ update ๋จ
Update sub repo
main repo์ root์์ ์์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด update๋ main repo์ sub repo์ ๊ด๊ณ์ ๋ฐ๋ผ sub repo๋ฅผ ์ ๋ฐ์ดํธ ํด์ผํ๋ค
Last updated