- GitHub ๊ณ์ ๋ง๋ค๊ธฐ
- Sourcetree ๋ฅผ ์ค์น
- ์์ ์ ๋ฐ๋์ ํฐ๋ฏธ๋์์ ์งํํฉ๋๋ค. Sourcetree์ ๊ฐ์ GUI๋๊ตฌ๋ ์ค๊ฐ์ ๊ณผ์ ์ ์๋ตํฉ๋๋ค.
- ๊ทธ๋ฌ๋ ๋ญ๊ฐ๋ฅผ ํ ๋๋ง๋ค Sourcetree๋ฅผ ๊ณ์ ๋ณด์๋ฉด Git์ ๋ํด ์ ์ ์๊ณ , ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๊ณ ์๋์ง๋ ์ ์ ์์ต๋๋ค.
- Windows
- WSL2๋ฅผ ๊ณต๋ถํ๊ณ ์ค์น.
- Windows terminal ์ค์น.
- Git ๋ช ๋ น์ด ์ํ์ CLI ํ๊ฒฝ์ธ terminal์์ ์งํ.
- WSL๋?
- WSL ์ค์น ๋ฐ WSL 2๋ก ์ ๋ฐ์ดํธ
- Mac
- iterm2 ์ค์น ํ iterm ํฐ๋ฏธ๋์์ ์งํ
brew install --cask iterm2
mkdir <์์ฑํ๊ณ ์ถ์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ>
cd <์์ฑํ ๋๋ ํ ๋ฆฌ ์ด๋ฆ>
git init
# ์)
~ $ mkdir test
~ $ cd test
~/test $ git init
git clone <์๊ฒฉ ์ ์ฅ์ ์ฃผ์>
# ์) git clone https://github.com/wholemann/daily-coding-dojo.git
Sourcetree๋ฅผ ์คํํด ๋ฐฉ๊ธ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ ธ์จ ํด๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ญ๊ฐ๋ฅผ ํ ๋๋ง๋ค Sourcetree๋ฅผ ๊ณ์ ๋ณด์๋ฉด Git์ ๋ํด ์ ์ ์๊ณ , ๋ฌด์จ ์ผ์ด ๋ฒ์ด์ง๊ณ ์๋์ง๋ ์ ์ ์์ต๋๋ค.
git remote
git remote -v
์ฃผ์) clone์ผ๋ก ์๊ฒฉ ์ ์ฅ์๋ฅผ ๊ฐ์ ธ์ค๋ฉด origin ์๊ฒฉ ์ ์ฅ์๊ฐ ์ด๋ฏธ ์ถ๊ฐ๋ ์ํ์ ๋๋ค.
์๋๋ git init ํ ์๋์ผ๋ก ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
git remote add origin <๋ด ๊ณ์ ์ repository ์ฃผ์>
git fetch origin
git remote add upstream <PR์ ๋ณด๋ผ ์๊ฒฉ repository ์ฃผ์>
git fetch upstream
- upstream - PR์ ๋ณด๋ด๊ณ ์ถ์ repository(ํ์ฌ์์ ์ฐ๋ฆฌํ repository)
- origin - upstream์์ ๋ด ๊ณ์ ์ผ๋ก forkํ repository
๋จผ์ PR(Pull Request)๋ฅผ ๋ณด๋ด๊ณ ์ถ์ repository๋ฅผ fork ํฉ๋๋ค. fork๋ฅผ ํ๋ฉด ๋ณธ์ธ ๊ณ์ ์ GitHub์ ๋์ผํ repository๊ฐ ๋ณต์ฌ๋ฉ๋๋ค.
๋ด ๊ณ์ ์ ๋์ผํ repository๊ฐ ๋ณต์ ๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค. ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ์ด๋ก์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋์ค๋ ์ฐฝ์์ ์ฃผ์๋ฅผ ๋ณต์ฌํฉ๋๋ค.
๋ณต์ฌํ ์ฃผ์๋ฅผ ์ด์ฉํ๋ฉด ๋ด ๋ก์ปฌ ๋จธ์ ์์ clone ํ ์ ์์ต๋๋ค.
์ฃผ์) clone์ผ๋ก ์๊ฒฉ ์ ์ฅ์๋ฅผ ๊ฐ์ ธ์ค๋ฉด origin ์๊ฒฉ ์ ์ฅ์๊ฐ ์ด๋ฏธ ์ถ๊ฐ๋ ์ํ์ ๋๋ค.
git clone <๋ด ๊ณ์ ์ fork๋ repository ์ฃผ์>
git remote add upstream <PR์ ๋ณด๋ผ ์๊ฒฉ repository ์ฃผ์>
# ์)
git clone https://github.com/wholemann/git-training.git
git remote add upstream https://github.com/CodeSoom/git-training.git
PR์ ๋ณด๋ด๋ ๊ณผ์ ์์ ์๊ฒฉ ์ ์ฅ์๋ upstream. origin 2๊ฐ๊ฐ ํ์ํฉ๋๋ค. ๋ก์ปฌ ๋จธ์ (๋ด ์ปดํจํฐ) ๊ด์ ์์ ๋ณด๋ฉด ๋ด ๊ณ์ ์ repository๋ ์๊ฒฉ์ด๊ณ , upstream์ repository๋ ์๊ฒฉ์ ๋๋ค.
- upstream - PR์ ๋ณด๋ด๊ณ ์ถ์ repository(ํ์ฌ์์ ์ฐ๋ฆฌํ repository)
- origin - upstream์์ ๋ด ๊ณ์ ์ผ๋ก forkํ repository
git remote -v
๋ฅผ ํตํด upstream๊ณผ origin์ด ์๋์ ๊ฐ์์ง ํ์ธํฉ๋๋ค.
~/codesoom/git-training $ git remote -v
origin [email protected]:wholemann/git-training.git (fetch)
origin [email protected]:wholemann/git-training.git (push)
upstream [email protected]:CodeSoom/git-training.git (fetch)
upstream [email protected]:CodeSoom/git-training.git (push)
git switch -c <๋ธ๋์น ์ด๋ฆ> upstream/main
upstream/main๋ ๋ถ์ฌ์ ์ฐ๊ณ , ๊ฐ์ด๋ฐ ์ฌ๋์(/)๊ฐ ๋ค์ด๊ฐ๋๋ค.
๋ธ๋์น ์ด๋ฆ์ ์์ ํ ๋ด์ฉ์ ํํํด์ผ ํฉ๋๋ค. ex) login-oauth-apply
git fetch upstream
git rebase upstream/main
์ํ๋ ์์ ์ ์ด ์์ ์ ํฉ๋๋ค.
๋ญ๊ฐ ๋ฐ๋ ์ ์ ์ถ๊ฐํฉ๋๋ค.
์ ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ ์๋๋ผ, ํ์ผ ์ถ๊ฐ/๋ณ๊ฒฝ/์ญ์ ๋ โ๋ฐ๋ ์ โ์ ์ถ๊ฐํฉ๋๋ค.
git add .
๋ฐฉ๊ธ ์ถ๊ฐํ ๋ฐ๋ ์ ์ ์ปค๋ฐํฉ๋๋ค.
๊ฐ๋ฅํ๋ฉด ๋ฉ์์ง๋ฅผ ์ฐ๋ฆฌ๊ฐ ๋์ค์ ์ฐพ์๋ณผ ์ ์๋ ํํ๋ก ์๋๋ค.
git commit
๋ฐ๋์ ์์งํ๊ณ ์งํค๋ ค๊ณ ๋ ธ๋ ฅํฉ์๋ค.
์ข์ git ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์์ฑํ๊ธฐ ์ํ 8๊ฐ์ง ์ฝ์
Commit Message Style Guide For Git
git commit ์๋ํฐ๋ vi ์๋ํฐ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋๋ค.
์ฃผ์) git commit -m "message" ๋ ์ฐ์ง ๋ง์ธ์. -m์ anti pattern์ ๋๋ค.
Vi ์๋ํฐ๋ฅผ ์ด์ฉํ ์ปค๋ฐ ๋ฉ์์ง ์์ฑ ๋ฐฉ๋ฒ
git push origin <๋ธ๋์น ์ด๋ฆ>
origin๊ณผ <๋ธ๋์น ์ด๋ฆ> ์ฌ์ด์ ๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ๋๋ค.
GitHub์์ New Pull Request๋ฅผ ํฉ๋๋ค.
Pull Request๋ฅผ ํ์ง๋ง ์์ ํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค. ์ฝ๋ ๋ฆฌ๋ทฐ ๋ด์ฉ์ ๋ณด๊ณ ๋ฐ์ํ๊ธฐ ์ํด ๊ณ ์น ๋๊ฐ ๋ง์๋ฐ, ํด๋น ๋ธ๋์น์ ๊ฐ์ Commit์ ์ถ๊ฐํ๊ณ Push๋ง ํ๋ฉด ๋ฉ๋๋ค.
git switch <๋ธ๋์น ์ด๋ฆ>
๋ณ๊ฒฝ ์์ ์ ์ด ์์ ์ ํฉ๋๋ค.
๋ญ๊ฐ ๋ฐ๋ ์ ์ ์ถ๊ฐํฉ๋๋ค.
์ ํ์ผ์ ์ถ๊ฐํ๋ ๊ฒ ์๋๋ผ, ํ์ผ ์ถ๊ฐ/๋ณ๊ฒฝ/์ญ์ ๋ โ๋ฐ๋ ์ โ์ ์ถ๊ฐํฉ๋๋ค.
git add .
๋ฐฉ๊ธ ์ถ๊ฐํ ๋ฐ๋ ์ ์ ์ปค๋ฐํฉ๋๋ค.
๊ฐ๋ฅํ๋ฉด ๋ฉ์์ง๋ฅผ ์ฐ๋ฆฌ๊ฐ ๋์ค์ ์ฐพ์๋ณผ ์ ์๋ ํํ๋ก ์๋๋ค.
git commit
git push origin <๋ธ๋์น ์ด๋ฆ>
๋ญ๊ฐ ์๋ก์ด ์์ ์ ํ์ง ์์๋ Pull Request๊ฐ ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
git switch main
git fetch upstream
git rebase upstream/main
origin ์๊ฒฉ ์ ์ฅ์์ main ๋ธ๋์น๋ฅผ ์ฌ๋ ค๋ณด๊ธฐ (ํ์๋ ์๋์ง๋ง ๊ธฐ๋ถ์ด ์ข์์ง)
git push origin main
๋ด ์ปดํจํฐ์ ์๋ ๋ธ๋์น ์ค Merge๋ ๊ฒ ๋ณด๊ธฐ
์ด ๋ชฉ๋ก์ main๋ ํฌํจ๋๋ค๋ ์ ์ ์ฃผ์!
git branch --merge
๋ด ์ปดํจํฐ์ ์๊ฒฉ ์ ์ฅ์์ ์๋ ๋ธ๋์น ์ค Merge๋ ๊ฒ ๋ณด๊ธฐ
์ด ๋ชฉ๋ก์ main๋ ํฌํจ๋๋ค๋ ์ ์ ์ฃผ์!
git branch -a --merge
git branch -d <๋ธ๋์น ์ด๋ฆ>
git branch -D <๋ธ๋์น ์ด๋ฆ>
git push origin :<๋ธ๋์น ์ด๋ฆ>
https://github.com/CodeSoom/git-training
Pull Request๋ฅผ ์ด์ฉํ ํ์
์์ํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ฌ,
๊ฐ์ ์ด๋์
๋ก ๋ง๋ ๋ฌธ์ ํ์ผ(์) csh.md
)์ ์ถ๊ฐํ์ฌ ์์ repository์
Pull Request๋ฅผ ๋ ๋ ค๋ด
๋๋ค.