-
Git ๊น ๊ธฐ์ด (Mac ๋งฅ)๐ develop/Git 2022. 4. 15. 22:37
git ๊ธฐ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
0. git ์ค๋นํ๊ธฐ
[1] Homebrew๋ฅผ ์ด์ฉํ์ฌ git ๋ค์ด๋ก๋
git์ ๋ค์ด๋ก๋ ํด์ค๋๋ค. Homebrew๋ฅผ ์ด์ฉํ git ๋ค์ด๋ก๋๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์๋ฉด ๋ฉ๋๋ค.
https://m-ur-phy.tistory.com/10
[2] iTerm2 ๋ค์ด๋ก๋ (์ ํ์ฌํญ)
๋ณธ ๊ธ์ iTerm2๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ์ต๋๋ค.
iTerm2๋ ๊ธฐ๋ณธ ํฐ๋ฏธ๋๋ณด๋ค ์ ์ฉํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ํฐ๋ฏธ๋์ ๋๋ค.
iTerm2 ํํ์ด์ง(https://iterm2.com/)๋ก ๋ค์ด๊ฐ์ ๋ค์ด๋ก๋๋ฅผ ์งํํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
+ iTerm2 ์ปค์คํฐ๋ง์ด์ง ๋ฐฉ๋ฒ์ Reference 1๋ฒ์ ๋งํฌ๋ฅผ ๋ฌ์๋์์ต๋๋ค.
(์ฌ๋ฐ๊ณ , ์ ์ฉํฉ๋๋ค! ๋ค๋ค ์งํํด๋ณด์ธ์๐ )
1. git ์ด๊ธฐ ์ค์
[1] git ์ฌ์ฉ์ ์ด๋ฆ ์ค์
// ์ฌ์ฉ์ ์ด๋ฆ ์ค์ ํ๊ธฐ git config --global user.name "์ฌ์ฉ์ ์ด๋ฆ" // ์ฌ์ฉ์ ์ด๋ฆ ํ์ธํ๊ธฐ git config user.name
git ์ฌ์ฉ์ ์ด๋ฆ์ ์ค์ ํด ์ค๋๋ค. ์ด๋ฆ์ ์ค์ ํด ์ฃผ๋ ์์ ์ ๋ชจ๋ ์ผ์ ์์์ ์ ๋๋ค.
[2] git ์ฌ์ฉ์ ์ด๋ฉ์ผ ์ค์
// ์ฌ์ฉ์ ์ด๋ฉ์ผ ์ค์ git config --global user.email "์ฌ์ฉ์ ์ด๋ฉ์ผ" // ์ฌ์ฉ์ ์ด๋ฉ์ผ ํ์ธ git config user.email
๋ค์์ ์ด๋ฉ์ผ์ ์ค์ ํด ์ค๋๋ค.
[3] ์ค๋ฐ๊ฟ ๋ฌธ์์ด ์ค์
// git ์ค๋ฐ๊ฟ ๋ฌธ์์ด ์ค์ git config --global core.autocrlf input
git์ ์ฌ์ฉํ ๋, ์๋์ฐ์ ๋งฅ ์ด์์ฒด์ ๋ ์๋ก ์ค๋ฐ๊ฟ ๋ฌธ์์ด์ด ๋ค๋ฆ ๋๋ค.
์ค๋ฐ๊ฟ ๋ฌธ์์ด์ด ๋ฌ๋ผ์ ๋ํ๋๋ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด autocrlf input์ ์ค์ ํด ์ค๋๋ค.
+ ์ฐธ๊ณ ๋ก ์๋์ฐ ์ ์ ๋ input ๋์ true๋ฅผ ์ ๋ ฅํด ์ฃผ์๋ฉด ๋ฉ๋๋ค.
2. git ์์์ ์ํ ์ด๊ธฐํ / ์ญ์ ํ๊ธฐ
[1] git ์ด๊ธฐํ ํ๊ธฐ
// git ์ด๊ธฐํ ํ๊ธฐ git init
git ์ด๊ธฐํ๋ฅผ ์งํํฉ๋๋ค. ์์ ์ ์ํ๋ ํด๋์ git init ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ด๊ธฐํ๋ฅผ ์งํ์์ผ์ค๋๋ค.
[2] ์์ฑ๋ git ํ์ธํ๊ธฐ
git init์ ์คํํ๊ฒ ๋๋ฉด .git ์ด๋ผ๋ ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค. ํด๋๋ ํ์ผ๋ฑ์ ํ์ธํ๊ณ ์ถ์ ๋ ls ๋ผ๋ ํฐ๋ฏธ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
// ํ์ผ ํ์ธํ๊ธฐ ls // ์จ๊ธด ํ์ผ๊น์ง ํ์ธํ๊ธฐ ls -al
.git์ ์จ๊ฒจ์ง ํด๋์ด๊ธฐ ๋๋ฌธ์ ls -al ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ git init ์คํ ํ ๊ธฐ๋ณธ์ ์ผ๋ก 'marster' ๋ธ๋์น๊ฐ ์์ฑ๋๊ฒ ๋ฉ๋๋ค. 'marster' ๋ธ๋์น๋ git์ ์์ํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋๋ ์์ ์ฅ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
[3] git ์ญ์ ํ๊ธฐ
// ์ญ์ ๋ช ๋ น์ด rm ์ญ์ ๋์ // git ํ๋ฒ์ ์ญ์ ํ๊ธฐ rm -rf .git
git ์ญ์ ๋ rm ์ด๋ผ๋ ํฐ๋ฏธ๋ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํฉ๋๋ค. rm -rf ๋ฅผ ์ด์ฉํ๋ฉด ์ญ์ ํ์ธ๊ณผ์ ์ ๊ฑฐ์น ํ์ ์์ด ํด๋ ์ ์ฒด๋ฅผ ํ๋ฒ์ ์ญ์ ํ ์ ์์ต๋๋ค.
3. git workflow
[1] git ๊ตฌ์ฑ
git ์ ์ด ์ธ ๊ฐ์ง ์์ ํ๊ฒฝ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
1. working directory
- ํ๋ก์ ํธ์ ํ์ผ์ ์์ ํ๊ณ ์์ ํ๋ ๊ณณ
2. staging area
- ๋ฒ์ ํ์คํ ๋ฆฌ์ ์ ์ฅํ ์ค๋น๊ฐ ๋์ด์๋ ํ์ผ๋ค์ ์ฌ๋ ค๋๋ ๊ณณ
3. .git directory
- ๋ฒ์ ์ ํ์คํ ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ git directory / repository
[2] git ํ๋ฆ
์ฐ์ ๊ฐ๋จํ๊ฒ ์์ฝ ์ค๋ช ์ ๋๋ฆฐ ํ ์ค์ ์์ฉ์ผ๋ก ๋์ด๊ฐ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
working directory ์์๋ ์ฌ๋ฌ๋ถ๋ค์ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค.
์ด๋์ ๋ ์์ฑ์ด ๋์๋ค ์ถ์ ํ๋ก์ ํธ๋ฅผ git add๋ฅผ ์ด์ฉํด์ staging area๋ก ๋๊ฒจ์ค๋๋ค.
์ ๋ง ์ต์ข ์ ์ผ๋ก ์์ฑ์ด ๋์๋ค๋ฉด git push๋ฅผ ํตํด git directory์ ์ฌ๋ ค์ค๋๋ค.
git directory ์ ์๋ ํ์ผ์ ์ธ์ ๋ ์ง checkout์ ํตํด working directory (์์ ์ฅ) ์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ํ์ํ ๋ถ๋ถ๋ง ๋ค์ ๊ฐ์ ธ์ ์์ ํ๊ณ ๋ค์ ์ฌ๋ ค์ฃผ๋ฉด์ ํจ์จ์ ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ๊น์ง๊ฐ LOCAL (๋ด ์ปดํจํฐ) ์ ํด๋น๋๋ ๋ถ๋ถ์ ๋๋ค.
์ฌ๊ธฐ์ ์ง๋ฌธ์ ํ๋ ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋๊ฐ ๋ด ๋งฅ๋ถ์ ์์ดํ๋ผ์ด๊ธฐ์ ๋ฃ๊ณ ๋๋ฆฐ๋ค๋ฉด?
-> ๋ด ์ปดํจํฐ์ ์๋ ํ๋ก์ ํธ๋ค์ ๋ฐฅ๋ฐ์ฐฌ์ด ๋์ด๋ฒ๋ฆฌ๊ฒ ์ฃ .
์ด๋ฌํ ์ผ์ ๋ฐฉ์งํ๊ธฐ ์ํด REMOTE (์๋ฒ) ์ ๋ฐ๋ก ์ ์ฅํด์ฃผ๋ ์ผ์ด ํ์ํฉ๋๋ค.
git directory ์ ์๋ LOCAL(๋ด ์ปดํจํฐ) ์ต์ข ํ์ผ๋ค์ git push ํด์ค๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก REMOTE(์๋ฒ)์ ์ ์ฅํด ์ฃผ๋ ๊ฒ์ ๋๋ค.
REMOTE(์๋ฒ) ์ ์๋ ํ์ผ๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. git pull ์ ์ด์ฉํด LOCAL(๋ด ์ปดํจํฐ) ๋ก ์ฎ๊ฒจ์ค๋๋ค. ๋.
์งง๊ฒ ์์ฝํด๋ณธ git & git hub ํ๋ฆ ์ค๋ช ์ด์์ต๋๋ค.
4. 3๋ฒ ์ค์ ํธ - 1 (git add)
[1] ํ์ผ ์์ฑํด๋ณด๊ธฐ
// ํ ์คํธ ํ์ผ ์์ฑํ๊ธฐ echo ํ ์คํธ > ํ์ผ์ด๋ฆ.txt // git ์ํ ํ์ธ git status
ํ์ผ์ ์์ฑํ๊ณ , git status ๋ฅผ ํ์ธํฉ๋๋ค.
์ถ์ (track) ์ด๋ผ๋ ์์ํ ๋จ์ด๊ฐ ๋ํ๋ฉ๋๋ค. track ์ git ์ด ํ์ผ์ ์ถ์ ํ๋ค๋ ๊ฒ์ ๋๋ค.
untracked ์ tracked ๊ฐ ์กด์ฌํ๋๋ฐ ์ด๊ธฐํ๋ฅผ ํ๊ฑฐ๋ ์๋ก ์์ฑํ ํ์ผ์ ๊ฒฝ์ฐ untracked.
์๋ ์๋ ํ์ผ์ด๋ add ๋ฅผ ์งํํด ์ค ๊ฒฝ์ฐ๋ tracked ๊ฐ ๋ฉ๋๋ค.
ํ์ฌ๋ ์๋ก ์์ฑํ ํ์ผ์ด๊ธฐ ๋๋ฌธ์ untracked ์ํ์์ด ํ์ธ๋ฉ๋๋ค.
[2] git add
// staging area ์ ์ฌ๋ฆฌ๊ธฐ git add ํ์ผ์ด๋ฆ // ํด๋น ํ์ฅ์ ์ ์ฒด ์ฌ๋ฆฌ๊ธฐ git add *.ํ์ฅ์
git add a.txt ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ staging area ์ ์ฌ๋ ค์ฃผ์๋๋ tracked ์ํ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค.
๋๋จธ์ง b.txt ์ c.txt ๋ ์ฌ์ ํ untracked ์ํ์ ๋๋ค.
๋๋จธ์ง๋ ๋ชจ๋ ์ค์ต์ ์ํด staging area ๋ก ์ฌ๋ ค์ค๋๋ค.
๋ค์ status ๋ฅผ ํ์ธํ๋ฉด ์ ๋ถ tracked ์ํ์ธ ๊ฒ์ผ๋ก ํ์ธ๋ฉ๋๋ค.
[3] modified
// ํ ์คํธ ํ์ผ์ ๋ด์ฉ ์ถ๊ฐํ๊ธฐ echo ์ถ๊ฐ๋ด์ฉ >> ์ถ๊ฐํ ํ์ผ
๋ง์ฝ staging ์ ํ์ผ์ด ๋ณ๊ฒฝ ๋๋ค๋ฉด? staging area ์ commit ํ ์ค๋น๊ฐ ๋ ์ธ ๊ฐ์ง ํ์ผ์ ์กด์ฌํ์ง๋ง
working directory ๋ด๋ถ modified(์์ ) ์ํ ํ์ผ์ด ํ๊ฐ์ง ์๊น๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ git add ๋ฅผ ์ด์ฉํด ์ฌ๋ ค์ค๋๋ค. ๊ทธ ๊ฒฐ๊ณผ modified ์ํ ์์ด staging area ์ ์ ๋ถ ์ ์ฌ๋ผ๊ฐ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
[4] staging area ์์ working directory ๋ก
// staging area ์ ์๋ ํ์ผ working directory ๋ก ๋ด๋ฆฌ๊ธฐ git rm --cached ํ์ผ์ด๋ฆ
rm --cached ๋ฅผ ์ด์ฉํ์ฌ working directory ๋ก ๋ด๋ ค ์ค๋๋ค. ์ด ์ํฉ์์ ํ์ผ๋ค์ ์์ฐ์ค๋ฝ๊ฒ untracked ์ํ๊ฐ ๋ฉ๋๋ค.
5. 3๋ฒ ์ค์ ํธ - 2 (git status)
// status ๊ฐ๋จํ๊ฒ ํ์ธํ๊ธฐ git status -s
์ค์ต์ ์ํด a ํ์ผ๊ณผ b ํ์ผ๋ง staging area ์ ์ฌ๋ ค๋์์ต๋๋ค.
git status -s ๋ฅผ ์ ๋ ฅํ๋ฉด status ๋ฅผ ๊ฐ๋จํ๊ฒ ๋ณผ ์ ์์ต๋๋ค.
a ์ b ํ์ผ์ ๋ ๋ค staging area ์ ์ ์๋ ๊ฒ์ผ๋ก ํ์ธ๋๊ณ , c ํ์ผ์ untracked ์ํ์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด ์ํ์์ a ํ์ผ์ ๋ณ๊ฒฝํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
a.txt ํ์ผ์ modified ์ํ๋ฅผ ์๋ฏธํ๋ M ์ด ๋ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ํ์ฌ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์์ง ๊น์ด ์ต์ํ์ง ์์ ์ด๋ฐ์๋ status ๋ก ์ ์ฒด๋ฅผ ํ์ธํ๊ณ , ์ต์ํด์ง ๋ค์์ -s ๋ฅผ ์จ์ ๊ฐ๋จํ๊ฒ ์ํ๋ฅผ ํ์ธํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
6. 3๋ฒ ์ค์ ํธ - 3 (git diff)
// ํ์ผ ์์ ์ฌํญ ํ์ธํ๊ธฐ git diff
git diff ๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ค ํ์ผ์ด ์ด๋ป๊ฒ ์์ ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
git diff ํ๋ฉด์ ๋ณด์๋ฉด, + add! ๋ก add ๊ฐ ์ถ๊ฐ๋์ด์์์ ํ์ธํ ์ ์์ต๋๋ค.
7. 3๋ฒ ์ค์ ํธ - 4 (git commit)
// ๋ฉ์์ง์ ํจ๊ป ์ปค๋ฐํ๊ธฐ git commit -m "์ปค๋ฐ ๋ฉ์์ง"
๋ฉ์์ง์ ํจ๊ป ์ปค๋ฐํ๋ฉด ๋! ์ด๋ ๊ฒ ๋๋ฉด ์ปค๋ฐ์ด ์๋ฃ๋จ์ ์๋ฏธํฉ๋๋ค.
8. git commit ์ ์ธ์ ? ์ด๋ป๊ฒ?
ํฌ์ง๋ ์๊ณ ๋๋ฌด ์์ง๋ ์์ ๋จ์์ด๋, ์๋ฏธ์๋ ์ด๋ฆ์ผ๋ก commit ์ ํด์ผํฉ๋๋ค.
๋ํ ์ด๋ฆ์ ํด๋นํ๋ ์ปค๋ฐ ๋ด์ฉ๋ง์ ๋ด๊ณ ์์ด์ผ ํฉ๋๋ค.
+ git
[1] status -> st ๋จ์ถํค ๋ง๋ค๊ธฐ
git config --global alias.๋จ์ถํค์ด๋ฆ ๋จ์ถํ ๋ช ๋ น์ด
status ๋ git ์ ํ์ฌ ์ํ๋ฅผ ์๋ ค์ฃผ๋ ๋ช ๋ น์ด ์ ๋๋ค. status ๋ฅผ st ๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์๋ alias ๋ฅผ ์ด์ฉํ๋ฉด๋ฉ๋๋ค.
[2] git ๋ช ๋ น์ด & ์์ฑ๊ฐ ์ ๋ณด ํ์ธํ๊ธฐ
git config --h
git ์ ๋ค์ํ ๋ช ๋ น์ด์ ์์ฑ๊ฐ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ง๋ฌด๋ฆฌ
์ฒ์์ผ๋ก ๊ธด ๋ฐํ์์ ๊ฐ์ง๋ฉฐ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํด ๋ณด์์ต๋๋ค.
๊ธด ๊ธ์ ์์ฑํ๋ค๋ ๊ฒ์ ์๊ฐ๋ณด๋ค ์ฝ์ง ์์ ์์ ์ด์์ต๋๋ค. ๊ฐ๋ ์ฑ, ์ง๋ฃจํจ ๋ฑ์ ์ ๊ฒฝ์ฐ๋ฉด์ ์์ฑํ๋๋ผ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฌ๊ฒ ๋์์ต๋๋ค. ์ฌ์ค ์ ๊ฒฝ์ด๋ค๊ณ ๋ถ์กฑํจ์ด ์๋ฒฝํ๊ฒ ์ฑ์์ง ์ ์๋ค๋ ๊ฒ๋ ์๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์์ฑํ๊ณ ๋์๋ ์์ฌ์์ด ๊ฐ๋ํฉ๋๋ค.
ํ์ง๋ง, ๊ธด ๊ธ์ ์์ฑํด๋ณด๋ฉด์ ๊ธ ์์ฑ์ ๋ํ ๊ด์ฐฎ์ ์์ด๋์ด๋ค์ด ๋ง์ด ์๊ฒผ์ต๋๋ค. (๋์ ์ธ ์์ด๋์ด์ ์ ์ ์ธ ๊ท์น.. ๊ทธ ์ด๋๊ฐ์ ๊ธ)
์์ผ๋ก ๋ ๋ฐ์ ํ! ๋ฐ์ ํ ! ๋ชจ์ต ๋ณด์ฌ๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค!
Reference
1. https://ooeunz.tistory.com/21
2. https://www.youtube.com/watch?v=Z9dvM7qgN9s
'๐ develop > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Homebrew git ๊น ์ค์น (0) 2022.04.12