Git์ ๊ณต์ ๋ช ์นญ์ ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ๋ก, ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ์์คํ ์ด๋ค. ์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ๋ ์ด์ ๋ ๋ญ๊น? ์์ ํ ๋๋ง๋ค ํ์ผ์ ์๋ก ๋ง๋ค๋ฉด ๊ด๋ฆฌ๊ฐ ํ๋ค์ด์, ์ด์ ๋ฒ์ ์ ์ฝ๋๋ก ๋์๊ฐ๊ธฐ ์ํด, ๋ ์ฌ๋ฌ๋ช ์ ๊ฐ๋ฐ์๋ค์ด ํ์ ์ ํ๊ธฐ ์ํด ์ฝ๋ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
Git์ ์ฌ์ฉํด ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ ํ๋ก์ ํธ์ ์ ์ฅ์์ด์, ๊ฐ๋ฐ์๋ค์ social network๋ค.
git init
: git ์์(์์๋ง ํ๋ค๊ณ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋๋ ๊ฒ์ ์๋๋ค)git status
: git ์ํ ํ์ธgit add
: ํ์ผ ์์ ์ด๋ ฅ ๊ธฐ๋ก ์ค๋น(commitํ๊ธฐ ์ํด ๋ชจ์๋์ ๊ณต๊ฐ/์์์ ์ฅ์)git add ./*
: ๋ชจ๋ ํ์ผ addgit commit
: ํ์ผ ์์ ์ด๋ ฅ ๊ธฐ๋ก(ํ์ฌ ๋ฒ์ ์ ์ฝ๋๋ฅผ ์ปค๋ฐ์ ์ ์ฅ)git log
: commit ๋ด์ญ ๋ณด๊ธฐ(์์ฑ์, hash ๊ฐ, ๋ ์ง์ ์๊ฐ, ์ปค๋ฐ ๋ฉ์ธ์ง)git checkout <commit-hash>
: ํน์ ์ปค๋ฐ ์์ ์ ์ฝ๋๋ก ๋๋๋ฆฌ๊ธฐ, git log์์ ๋ณด์ด๋ ์ปค๋ฐ์ ์ค์ hash ๊ฐ ์
๋ ฅgit์์ ๊ด๋ฆฌํ์ง ์์๋ ๋๋ ํ์ผ์ .gitignore ํ์ผ์ ํ๋ก์ ํธ ํด๋์ ์์ฑํด ๊ด๋ฆฌํ๋ค. ํ์ผ ์์ ํด๋นํ๋ ํ์ผ๋ช ๊ณผ ํด๋๋ช ์ ๊ฐ๊ฐ ์๋ก์ด ์ค์ ๋์ดํ๋ค.
add๋ commit์ ํ๊ธฐ ์ํ ์ค๋น ๋จ๊ณ๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์. commit ํ๊ธฐ ์ ์๋ ๋ฐ๋์ add๋ฅผ ํด์ผ ํ๋ค. add๋ฅผ ํ ๋ค ํ์ผ์ ์์ ํ๋ค๋ฉด ๋ค์ add๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. git status๋ฅผ ํตํด ์ํ๋ ํ์ผ์ด staging area์ add๋ ๊ฒ์ ํ์ธํ๊ณ commitํ๋ค.
repository๋ฅผ ์์ฑํ๋ฉด ์น์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ command line์ ์๋ ค์ค๋ค. ๊ธฐ์กด์ master branch๋ก ์์
์ ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ git branch -M main
์ผ๋ก branch๋ฅผ main์ผ๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ๋ฆฌ๊ณ git remote add origin https://github.com/dabin219/wecode.git
์ผ๋ก ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ ๋ค pushํ๋ฉด github repository์์ ์ซ๋ ํ๊ณ ์ถ๊ฐํ ํ์ผ์ด ๋ณด์ธ๋ค. ์์ ์ฌํญ์ด ์๊ธด๋ค๋ฉด ํ์ผ์ ์ ์ฅํ๊ณ add -> commit -> push ์์ผ๋ก ์
๋ฐ์ดํธ ํด์ผ Github repo์๋ ๋ฐ์์ด ๋๋ค๋ ๊ฒ์ ๊ผญ ๊ธฐ์ตํ์!
git remote add origin https://github.com/dabin219/wecode.git
: ๋ก์ปฌ Git repository ์๊ฒ ์ด๋ฆ์ด origin ์ด๋ผ๋ ์ด๋ค URL์ ์๋ ค์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด๋ฆ์ด ๊ผญ origin ์ด์ด์ผ ํ์ง๋ ์์ง๋ง ๋ณดํต remote ์ฃผ์๊ฐ ํ๊ฐ๋ผ๋ฉด origin ์ด๋ผ๊ณ ์ง์ด์ฃผ๊ฒ ๋๋ค.
password token
์ฒ์ push๋ฅผ ํ์ ๋ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
์ด๋ https://github.com/settings/tokens ์์ ํ ํฐ์ ๋ง๋ค์ด ๋น๋ฐ๋ฒํธ์ ํ ํฐ์ ์ ๋ ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๋ค.
repository clone
repository์ ์ฝ๋๊ฐ ์๋ ์ํ๋ก push๋ฅผ ํ๋ฉด ์ค๋ฅ๊ฐ ๋๊ธฐ ๋๋ฌธ์ repository์ ์ฝ๋๋ฅผ local๋ก ๋จผ์ ๊ฐ์ ธ์จ ๋ค ์์
์ ํด์ผ ํ๋ค. ์์
์ด ๋๋๋ฉด add commit push๋ฅผ ํด์ค๋ค. ์์
ํ repo ์์ฑ์ ํ๋ฉด remote add๋ก ์ฐ๊ฒฐ์ ํด์ผํ์ง๋ง, clone์ ํ๊ฒ ๋๋ฉด ๊ทธ ๊ณผ์ ์ด ์๋ต๋๋ค.
git clone <github-repo-link>
Branching and merging
branch๋ ๋
๋ฆฝ์ ์ผ๋ก ์ด๋ค ์์
์ ์งํํ๊ธฐ ์ํด ํ์ํ๋ค. ๊ฐ๊ฐ์ ๋ธ๋์น๋ ๋ค๋ฅธ ๋ธ๋์น์ ์ํฅ์ ๋ฐ์ง ์์ ์ฌ๋ฌ ์์
์ ๋์์ ์งํํ ์ ์๋ค.
git branch <branch name>
git checkout <branch name>
git add .
git commit -m "message"
git push origin <branch name>
git merge <branch name>
: ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํ์ฌ ๋ธ๋์น์ ๋ณํฉ, a๋ผ๋ ๋ธ๋์น์์ ์์ ํ ๋ด์ฉ์ b๋ผ๋ ๋ธ๋์น์ ์ ์ฉํ ์ ์๋ค.
git branch -d <branch name>
: ๋ธ๋์น ์ญ์ ํ๊ธฐ
Pull Request(PR)
ํ๋ก์ ํธ ์ค๋์๊ฒ ๋ด๊ฐ ์์
ํ branch ๋ด์ฉ์ master branch์ ๋ฐ์ํด๋ฌ๋ผ๊ณ ์์ฒญ์ ๋ณด๋ธ๋ค. Merge pull request -> create pull request ์์ฑ
Merge
PR์ดํ ๋ชจ๋ ๋ฆฌ๋ทฐ ๋ด์ฉ์ด ๋ฐ์๋ ๋ค์ master branch์ ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ผ๋ฉด ํด๋น PR์ master branch๋ก merge๋๋ค.
github๋ก๋ถํฐ ๋ณ๊ฒฝ์ฌํญ pull
git pull origin master
remote์ ์ต์ ํ๋ ์ฝ๋๋ฅผ ๋ด ๋ก์ปฌ repo์ ๋ฐ์ํ๋ค. ๋ณ๊ฒฝ์ฌํญ๋ง ๋ฐ์์จ๋ค. clone์ ์์
์ ์์ํ ๋ ํ ๋ฒ๋ง ํด์ฃผ๋ฉด ๋๋ค. ๊ทธ ์ดํ์๋ pull๋ก ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ๋๋ค.
์ฃผ์ : local master์์๋ pull๊ณผ ์๋ก์ด branch๋ฅผ ๋ง๋๋ ๊ฒ๋ง ํ์. ์ด๋ ๊ฒ ํ์ง ์์ผ๋ฉด github์์ conflicts ๋๋ฌธ์ error ์ง์ฅ์ ๊ฐํ์๋,,,