๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
(DVCS)
๋ก์ปฌ ๋ฒ์ ๊ด๋ฆฌ > ์ค์ ์ง์ค์ ๋ฒ์ ๊ด๋ฆฌ > ๋ถ์ฐ ๋ฒ์ ๊ด๋ฆฌ
https://git-scm.com/book/ko/v2/ ์์ git์ ๊ดํ ์ ์ฒด ๋ด์ฉ ํ์ธ ๊ฐ๋ฅํ๋ค.
Git ์ค์น๋ ์ด ๊ณณ์ ์ฐธ์กฐ.
Git์ ์ค์นํ๊ณ ๋์ ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ๋ ๊ฒ์ ์ฌ์ฉ์์ด๋ฆ๊ณผ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. Git์ ์ปค๋ฐํ ๋๋ง๋ค ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ค. ํ ๋ฒ ์ปค๋ฐํ ํ์๋ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
$ git config --global user.name <์ฌ์ฉ์ ์ด๋ฆ ex)darkblank>
$ git config --global user.email <์ฌ์ฉ์ ์ด๋ฉ์ผ ex)darkblank1990@gmail.com)
์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ ๋๋ฉด Git์์ ์ฌ์ฉํ ํ ์คํธ ํธ์ง๊ธฐ๋ฅผ ๊ณ ๋ฅธ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก Git์ ์์คํ ์ ๊ธฐ๋ณธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค. ๋ค๋ฅธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๋ค์์ฒ๋ผ ์ค์ ํ์ฌ์ค๋ค.
$ git config --global core.editor <ํธ์ง๊ธฐ ์ด๋ฆ ex)emacs>
$git config -list๋ช
๋ น์ ์คํํ๋ฉด ์ค์ ํ ๋ชจ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค. ๊ทธ๋์ ๋ฐ๋ก ํ์ธํ ์ ์๋ค.
$git config <key> ๋ช
๋ น์ผ๋ก Git์ด ํน์ key์ ๋ํด ์ด๋ค ๊ฐ์ ์ฌ์ฉํ๋์ง ํ์ธํ ์ ์๋ค.
$ git config user.name
darkblank
$git ๋๋ $git help๋ช
๋ น์ผ๋ก ์์ฃผ ์ฌ์ฉํ๋ ๋ช
๋ น๋ค์ ๋ณผ ์ ์๋ค.
$git help <๋ช
๋ น> ๋๋ $git help <๊ฐ๋
> ๋ช
๋ น์ผ๋ก ํน์ ํ์ ๋ช
๋ น์ด๋ ๊ฐ๋
์ ๋ํ ๋์๋ง์ ๋ณผ ์ ์๋ค.
๊ธฐ์กด ํ๋ก์ ํธ๋ ๋๋ ํ ๋ฆฌ๋ฅผ Git ์ ์ฅ์๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์๊ณ , ๋ค๋ฅธ ์๋ฒ์ ์๋ ์ ์ฅ์๋ฅผ Cloneํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
git์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ถ์ ํ๋ก์ ํธ๋ ํด๋๋ก ์ด๋ํ ๋ค์ $git init๋ช
๋ น์ ์ด์ฉํ์ฌ git ์ ์ฅ์๋ฅผ ๋ง๋ค์ด์ค๋ค. ํ์ง๋ง ์ด ๋ช
๋ น๋ง์ผ๋ก๋ ํ๋ก์ ํธ๋ ํด๋ ๋ด๋ถ์ ์ด๋ ํ ํ์ผ๋ ๊ด๋ฆฌํ์ง ์๋๋ค. $git add <ํ์ผ๋ช
>๋ช
๋ น์ผ๋ก ์ ์ฅ์์ ํ์ผ์ ์ถ๊ฐ ํ ํ $git commit๋ช
๋ น์ ํตํด ์ปค๋ฐ์ ํด์ฃผ๋ฉด์ ํ์ผ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ํ๊ฒ ๋๋ค.
$git clone <url>๋ช
๋ น์ผ๋ก ์ ์ฅ์๋ฅผ Clone ํ๋ค. ์ด ๋ช
๋ น์ ํ์ฌ ์์นํ ๋๋ ํ ๋ฆฌ์ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ .git๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์์ ์๋์ผ๋ก ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ Checkout ํด ๋๋๋ค. ์์ฑ๋์ด์ง ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ฉด Checkout์ผ๋ก ์์ฑํ ํ์ผ์ ๋ณผ ์ ์๊ณ ๋น์ฅ ํ๊ณ ์ ํ๋ ์ผ์ ์์ํ ์ ์๋ค. ์ ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์ ์ง์ ์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ ์ฐ๋ฉด ๋๋ค.
$ git clone <url> <๋๋ ํ ๋ฆฌ๋ช
>
์ด๋ค ํ์ผ์ Git์ด ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค. ๋ณดํต ๋ก๊ทธ ํ์ผ์ด๋ ๋น๋ ์์คํ
์ด ์๋์ผ๋ก ์์ฑํ ํ์ผ์ด ๊ทธ๋ ๋ค. ๊ทธ๋ฐ ํ์ผ์ ๋ฌด์ํ๋ ค๋ฉด .gitignore ํ์ผ์ ๋ง๋ค๊ณ ๊ทธ ์์ ๋ฌด์ํ ํ์ผ ํจํด์ ์ ๋๋ค.
pyenv๋ก ๊ด๋ฆฌ๋์ด์ง๋ ํด๋๊ฐ ์๋ค๊ณ ํ ๋, Git์ด ๊ด๋ฆฌ ํ ํ์๊ฐ ์๋ ํ์ผ๋ค์ด ๋ฌด์์ธ์ง ์๊ณ ์ถ๋ค๋ฉด https://www.gitignore.io/ ์์ ์ด๋ค ํ์ผ๋ค์ ๋ฌด์ํด์ผ ํ ์ง ๊ฒ์ํ์ฌ ๋ณผ ์ ์๋ค.
.gitignore ํ์ผ์ ์
๋ ฅํ๋ ํจํด์ ์๋ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ์๋ฌด๊ฒ๋ ์๋ ๋ผ์ธ์ด๋,
#๋ก ์์ํ๋ ๋ผ์ธ์ ๋ฌด์ํ๋ค. - ํ์ค Glob ํจํด์ ์ฌ์ฉํ๋ค.
- ์ฌ๋์(/)๋ก ์์ํ๋ฉด ํ์ ๋๋ ํ ๋ฆฌ์ ์ ์ฉ๋์ง(Recursivity) ์๋๋ค.
- ๋๋ ํ ๋ฆฌ๋ ์ฌ๋์(/)๋ฅผ ๋์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํํํ๋ค.
- ๋๋ํ(!)๋ก ์์ํ๋ ํจํด์ ํ์ผ์ ๋ฌด์ํ์ง ์๋๋ค.
.gitignore ํ์ผ์ ์
# ํ์ฅ์๊ฐ .a์ธ ํ์ผ ๋ฌด์
*.a
# ์ ๋ผ์ธ์์ ํ์ฅ์๊ฐ .a์ธ ํ์ผ์ ๋ฌด์ํ๊ฒ ํ์ง๋ง lib.a๋ ๋ฌด์ํ์ง ์์
!lib.a
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ TODOํ์ผ์ ๋ฌด์ํ๊ณ subdir/TODO์ฒ๋ผ ํ์๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ๋ฌด์ํ์ง ์์
/TODO
# build/ ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ํ์ผ์ ๋ฌด์
build/
# doc/notes.txt ํ์ผ์ ๋ฌด์ํ๊ณ doc/server/arch.txt ํ์ผ์ ๋ฌด์ํ์ง ์์
doc/*.txt
# doc ๋๋ ํ ๋ฆฌ ์๋์ ๋ชจ๋ .pdf ํ์ผ์ ๋ฌด์
doc/**/*.pdf
ํ์ผ์ ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ณดํต $git status๋ช
๋ น์ ์ฌ์ฉํ๋ค. $git status๋ช
๋ น์ ํด๋ ๋ด์ ํ์ผ์ด ์ด๋ค ์ํ์ธ์ง๋ฅผ ๋ํ๋ด์ฃผ๋ฉฐ add ํ์ฌ์ผ ํ ๋๋ commitํ์ฌ์ผ ํ ํ์ผ๋ค์ ๋ํ๋ด ์ค๋ค.
๋ํ git diff๋ผ๋ ๋ช
๋ น์ผ๋ก ํ์ธํ ์๋ ์๋๋ฐ, ์ด๊ฑด ์์ง ์ธ ์ผ์ด ์์์ ๋ฟ๋๋ฌ ์์ง ์์ธํ ์ด๋ ํ ์ํฉ์ ์ฐ๋ ๊ฒ์ธ์ง๋ ์ ๋ชฐ๋ผ์ ๋์ค์ ๋ค์ ์ ๊ฒ ๋ค.
$git rm๋ช
๋ น์ผ๋ก ํ์ผ์ ์ง์ฐ๊ฑฐ๋ ํ์ ๊ฒฝ์ฐ์๋ ์ปค๋ฐ์ ํด์ฃผ์ด์ผ ํ๋ค. $git rm๋ช
๋ น์ผ๋ก ํ์ผ์ ์ง์ ์ ๊ฒฝ์ฐ์๋ ์ค์ ๋ก ์ํน ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ๋ ์์ด์ง์ง๋ง, --cached์ต์
์ ์ฌ์ฉํ๋ฉด Staging Area์์๋ง ์ ๊ฑฐ๋์ด์ง๊ณ ์ํน ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ์ง์ฐ์ง ์๊ณ ๋จ๊ฒจ๋ ์ ์๋ค.
ํ์ผ ์ด๋ฆ์ด ๋ฐ๋์์ ๊ฒฝ์ฐ ๋ํ ์ปค๋ฐ์ ํด์ฃผ์ด์ผ ํ๋ค. $git mv file_from file_to ๋ช
๋ น์ผ๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๋ค.
- ์ฐธ๊ณ : ํ์ผ ์ด๋ฆ ๋ณ๊ฒฝ์ ํ ์ํ๋ก ์์ ์ ํ ํ Staging Area๋ก ์ฎ๊ธฐ๋ ๊ณผ์ ์์ ํ์ผ ๋ด์ฉ ์ค ๋ง์ ๋ถ๋ถ์ด ์์ ๋์ด์ง ๊ฒฝ์ฐ Git์์ ๋ฐ๋์ด์ง ์ด๋ฆ์ ์ธ์งํ์ง ๋ชปํ ์ ์๋ค. (๋ด์ฉ์ด ๋๋ฌด ๋ฐ๋์๊ธฐ ๋๋ฌธ์) ์ด๋ฌํ ๊ฒฝ์ฐ์๋
$git diff -M์ผ๋ก ์ด๋ฅผ ์ก์์ค ์ ์๋ค.
$git log๋ช
๋ น์ ํตํ์ฌ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์๊ฐ์์ผ๋ก ์กฐํํ ์ ์๋ค. ๋จ, ํ์ฌ์ ํค๋๊ฐ ์๋๊ณณ์ ๊ธฐ์ค์ผ๋ก ๊ทธ ์ดํ์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ ๋ณด์ฌ์ฃผ์ง ์๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์ ๋ชจ๋ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด --all ์ต์
์ ๋ถ์ฌ์ฃผ๋ฉด ๋ณผ ์ ์๋ค. ๋ํ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด --oneline์ต์
์, --graph์ต์
์ผ๋ก ๋ธ๋์น์ ๋จธ์ง ํ์คํ ๋ฆฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์คํค ๊ทธ๋ํ๋ฅผ ์ถ๋ ฅํ ์๋ ์๋ค.
๋ง์ฝ ์ด๋ ํ ์์ ์ฌํญ์ ๋น ํธ๋ฆฌ๊ณ ์ปค๋ฐ์ ์งํํ์๋ค๋ฉด --amend์ต์
์ ์ฌ์ฉํ ์ ์๋ค.
$ git commit --amend
์ด ๋ช
๋ น์ Staging Area๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฐํ๋ค. ๋ง์ฝ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐํ๊ณ ๋์ ์์ ํ ๊ฒ์ด ์๋ค๋ฉด(์ปค๋ฐํ์๋ง์ ๋ฐ๋ก ์ด ๋ช
๋ น์ ์คํํ๋ ๊ฒฝ์ฐ) ์กฐ๊ธ ์ ์ ํ ์ปค๋ฐ๊ณผ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋ค. ์ด๋๋ ์ปค๋ฐ ๋ฉ์์ง๋ง ์์ ํ๋ค.
ํธ์ง๊ธฐ๊ฐ ์คํ๋๋ฉด ์ด์ ์ปค๋ฐ ๋ฉ์์ง๊ฐ ์๋์ผ๋ก ํฌํจ๋๋ค. ๋ฉ์์ง๋ฅผ ์์ ํ์ง ์๊ณ ๊ทธ๋๋ก ์ปค๋ฐํด๋ ๊ธฐ์กด์ ์ปค๋ฐ์ ๋ฎ์ด์ด๋ค.
์ปค๋ฐ์ ํ๋๋ฐ Stage ํ๋ ๊ฒ์ ๊น๋นกํ๊ณ ๋น ํธ๋ฆฐ ํ์ผ์ด ์์ผ๋ฉด ์๋์ ๊ฐ์ด ๊ณ ์น ์ ์๋ค.
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
์ฌ๊ธฐ์ ์คํํ ๋ช ๋ น์ด 3๊ฐ๋ ๋ชจ๋ ์ปค๋ฐ ํ ๊ฐ๋ก ๊ธฐ๋ก๋๋ค. ๋ ๋ฒ์งธ ์ปค๋ฐ์ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ์ ๋ฎ์ด์ด๋ค.
์ค์๋ก $git add -A ๋ช
๋ น์ ์ด์ฉํด ์์น ์๋ ํ์ผ๊น์ง Staging Area๋ก ๋ฃ์๋ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ Unstaged ์ํ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
$git reset HEAD <ํ์ผ๋ช
>
$git reset ๋ช
๋ น์ ์ํํ๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ ๋ค๋ฃฐ ์ ์๋๋ก ํ๋ค.
์์ ํ ํ์ผ์ ์ต๊ทผ ์ปค๋ฐํ ์ํ๋ก ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ ์ ์๋ค.
$git checkout -- <ํ์ผ๋ช
>
์ด ๋ช ๋ น ๋ํ ์๋ ํ์ผ๋ก ๋ฎ์ด ์์ฐ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ด์ฉ์ด ์ ๋ถ ์ฌ๋ผ์ง๋ฏ๋ก ์๋นํ ์ํํ ๋ช ๋ น์ด๋ค. ์์ ํ ๋ด์ฉ์ด ์ ๋ง ๋ง์์ ๋ค์ง ์์ ๋์๋ง ์ฌ์ฉํ๋๋ก ํ๋ค.
Branch๋ฅผ ์ด์ฉํ๋ฉด ์์ ํ ๋ด์ฉ์ ๋ฒ๋ฆฌ์ง ์์ผ๋ฉด์ ์ด์ ์์ ์ผ๋ก ๋๋๋ฆด ์ ์๋ค. ์ด์ ์ ์ปค๋ฐํ ๋ถ๋ถ์ผ๋ก ์ด๋ํ์ฌ ์ Branch๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด Branch๋ฅผ ์ค๊ฐ๋ฉด์ ์ด์ ์์ ์ผ๋ก ๋๋๋ฆด ์๋ ์๊ณ , ์์ ํ ์์ ์ผ๋ก ๋๋์์ฌ ์๋ ์๋ค.
๋ํ Stash ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ์ฝ๊ฒ ๋๋๋ฆด ์๋ ์๋๋ฐ $git stash๋ช
๋ น์ ์ฐ๋ฉด ๋ง์ง๋ง ์ปค๋ฐ์ผ๋ก๋ถํฐ ์ด ๋ช
๋ น์ ์ฐ๋ ์์ ๊น์ง์ ๋ณ๊ฒฝ์ฌํญ์ Stash์ ๋ด์์ค๋ค. ์์ ํ ํ ์ปค๋ฐ์ ํ์ง ์์ ์ํ๋ผ๋ฉด ์ด ๋ด์ฉ๋ค์ Stash์ ๋ด์ ๋์ ์ ์๋ค. Stash์ ๋ด์ ๋ด์ฉ์ $git stash pop์ผ๋ก ๋ถ๋ฌ๋ค์ผ ์ ์๊ณ $git stash -u๋ช
๋ น์ผ๋ก Untraked ํ์ผ๊น์ง ๊ด๋ฆฌํ ์ ์๋ค. Stash๋ฅผ ์ด์ฉํ๋ฉด ์ค์๋ก ๋ค๋ฅธ ๋ธ๋์น์์ ์์
ํ ๊ฒฝ์ฐ์๋ ์์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฆฌ๋ชจํธ ์ ์ฅ์๋ ์ธํฐ๋ท์ด๋ ๋คํธ์ํฌ ์ด๋๊ฐ์ ์๋ ์ ์ฅ์๋ก ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ผ์ ํ๊ธฐ ์ํด์ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ ์ค ์์์ผ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
$git remote add <๋จ์ถ์ด๋ฆ> <์ ์ฅ์url>
๋ง์ฝ ๋จ์ถ์ด๋ฆ์ ์๋ฌด๊ฒ๋ ์ ์ง ์์ผ๋ฉด ๋จ์ถ์ด๋ฆ์ ์๋์ผ๋ก origin์ผ๋ก ์์ฑ๋์ด์ง๋ค.(์๋ง๋)
$git remote ๋ช
๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋จ์ถ ์ด๋ฆ์ ํ์ธ ํ ์ ์๊ณ
$git remote -v๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋จ์ถ ์ด๋ฆ๊ณผ url์ ํจ๊ป ํ์ธํ ์ ์๋ค.
$git remote show <๋ฆฌ๋ชจํธ ์ ์ฅ์ ๋จ์ถ์ด๋ฆ> ๋ช
๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์๋ ์๋ค.
๋ค์ ๋ช ๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
$git fetch <๋ฆฌ๋ชจํธ ์ ์ฅ์ ๋จ์ถ์ด๋ฆ>
์ด ๋ช
๋ น์ผ๋ก ๋ก์ปฌ์๋ ์์ง๋ง ๋ฆฌ๋ชจํธ ์ ์ฅ์์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค. fetch๋ช
๋ น์ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ค์ง๋ง ์๋์ผ๋ก merge์์ผ์ฃผ์ง๋ ์๋๋ค. ๋ฐ๋ผ์ ๋ก์ปฌ์์ ํ๋ ์์
์ ์ ๋ฆฌํ๊ณ ์๋์ผ๋ก merge์์ผ์ฃผ์ด์ผ ํ๋ค.
$git pull ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋ฆฌ๋ชจํธ ์ ์ฅ์ ๋ธ๋์น์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋ฟ ์๋๋ผ ์๋์ผ๋ก ๋ก์ปฌ ๋ธ๋์น์ merge์ํฌ ์ ์๋ค. (์์ง ์ค์ ๋ก ์ฌ์ฉํด ๋ณธ ์ ์ด ์๊ธฐ ๋๋ฌธ์ ๋์ค์ ๋ ์์ธํ ์ ๋ฆฌ)
$git push <๋ฆฌ๋ชจํธ ์ ์ฅ์ ๋จ์ถ์ด๋ฆ> <๋ธ๋์น ์ด๋ฆ>
์์ ๊ฐ์ ๋ช
๋ น์ผ๋ก ๋ก์ปฌ ์ ์ฅ์์ ๋ด์ฉ์ ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ์ ์ฅํ ์ ์๋ค. ๋จ, ์ด ๋ช
๋ น์ ๋ค๋ฅธ ์ฌ๋์ด ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋ด์ฉ์ ์์ ํ์ฌ ๋์๋ค๋ฉด ๊ทธ ๋ด์ฉ์ ๊ฐ์ ธ์์ mergeํ ํ์ pushํ์ฌ์ผ ํ๋ค.
์๋์ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ์ด๋ฆ์ด ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.
$git remote rename <์๋์ด๋ฆ> <๋ฐ๊ฟ์ด๋ฆ>
์๋์ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
$git remote remove <์ ์ฅ์ ์ด๋ฆ>
์ปค๋ฐ ์ฌ์ด๋ฅผ ๊ฐ๋ณ๊ฒ ์ด๋ํ ์ ์๋ ํฌ์ธํฐ ๊ฐ์ ๊ฒ์ผ๋ก, ์ปค๋ฐ์ ํ ๋ ๋ง๋ค ๋ธ๋์น๋ ๊ฐ์ฅ ๋ง์ง๋ง ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
์๋์ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ ์ ์๋ค.
$git branch <์ ๋ธ๋์น ์ด๋ฆ>
๋ธ๋์น๋ฅผ ์์ฑํ ํ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ค๋ฅธ ๋ธ๋์น๋ก ์ด๋ํ ์ ์๋ค. ์ฐธ๊ณ ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก Git์ master ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ ์ด master ๋ธ๋์น๊ฐ ์๋ ์ปค๋ฐ์ ๊ฐ๋ฅดํค๊ณ ์๋ค.
$git checkout <๋ธ๋์น ์ด๋ฆ>
์ด๋ ๊ฒ ์๋ก์ด ๋ธ๋์น๋ฅผ ์์ฑํ ํ ํด๋น ๋ธ๋์น๋ก ์ด๋ํ์ฌ ์ปค๋ฐ์ ํ๊ฒ ๋๋ฉด master ๋ธ๋์น๋ ์ด์ ์ปค๋ฐ์ ๋จ์์๊ฒ ๋๊ณ ์๋ก์ด ๋ธ๋์น๊ฐ ์์ผ๋ก ์ด๋ํ๊ฒ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ผ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๋ฉด์ ๊ทธ ๋ธ๋์น๋ก ์ด๋ํ ์ ์๋ค.
$git checkout -b <์ ๋ธ๋์น ์ด๋ฆ>
์ด ๋ถ๋ถ์ ์ด ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ฌ ๊ทธ๋ฆผ๊ณผ ํจ๊ป ๋ณด๋ ๊ฒ์ด ์ข์ ๋ฏ ํ๋ค.
$git branch ๋ช
๋ น์ผ๋ก ํ์ฌ ๋ธ๋์น์ ๋ชฉ๋ก์ ๋ณผ ์ ์๋ค. * ํ์๊ฐ ๋ถ์ด์๋ ๋ธ๋์น๋ ํ์ฌ checkout ํด์ ์์
ํ๋ ๋ธ๋์น๋ฅผ ๋ํ๋ธ๋ค. ์ฆ, ์ง๊ธ ์์ ํ ๋ด์ฉ์ ์ปค๋ฐํ๊ฒ ๋๋ฉด * ํ์๊ฐ ๋ถ์ด์๋ ๋ธ๋์น๊ฐ ํ ๋จ๊ณ ์์ผ๋ก ๋์๊ฐ๋ค. $git branch -v ๋ช
๋ น์ ์คํํ๋ฉด ๋ธ๋์น๋ง๋ค ๋ง์ง๋ง ์ปค๋ฐ ๋ฉ์์ง๋ ๋ณผ ์ ์๋ค.
๊ฐ ๋ธ๋์น์ ํ์ฌ ์ํ๋ฅผ ํ์ธํ๊ธฐ ์ข์ ์ต์ ๋ ์๋ค. ํ์ฌ checkout ํ ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก merge ๋ ๋ธ๋์น์ธ์ง ๊ทธ๋ ์ง ์์์ง ํํฐ๋ง ํด ๋ณผ ์ ์๋ค. ๋ช ๋ น์ ์๋์ ๊ฐ๋ค.
$git branch -merged
$git branch -no-merged
์ฌ๊ธฐ์ -merged์ต์
์ผ๋ก ํ์ธํ ๋ธ๋์น ์ค * ํ์๊ฐ ๋ถ์ด์์ง ์์ ๋ธ๋์น๋ ์ด๋ฏธ ๋ค๋ฅธ ๋ธ๋์น์ merge ํ๊ธฐ ๋๋ฌธ์ ์ญ์ ํด๋ ์ ๋ณด๋ฅผ ์์ง ์๋๋ค. ๋ธ๋์น ์ญ์ ๋ช
๋ น์ ๋ค์๊ณผ ๊ฐ๋ค
$git branch -d <๋ธ๋์น ์ด๋ฆ>
mergeํ์ง ์์ ๋ธ๋์น๋ฅผ ๊ฐ์ ๋ก ์ญ์ ํ๋ ์ต์
์ -d ๋์ -D๋ฅผ ์ฐ๋ฉด ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ด ๋งํฌ๋ฅผ ์ฐธ์กฐ ํ๋๋ก ํ๊ณ , ๋ฆฌ๋ชจํธ ์ ์ฅ์์ ๋ฆฌ๋ชจํธ ๋ธ๋์น๋ฅผ ์์ ์๊ฐ์ ์งํํ๋ ๊ฐ๋จํ ํ์ ๊ณผ์ ์ ํตํด ์์๋ณธ๋ค.
'์ฌ์ฉ์ 1'์ด ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ํ์
์ ํ๊ธฐ๋ก ํ '์ฌ์ฉ์ 2'๋ฅผ ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ก ์ด๋ํ๋ค.
'์ฌ์ฉ์1'์ด ์ ํ์ผ์ ๋ง๋ค์ด์ ์ปค๋ฐ์ ํ ๋ค Pushํ๋ค.
'์ฌ์ฉ์2'๊ฐ ์ด ๋ฆฌ๋ชจํธ ์ ์ฅ์๋ฅผ Clone์ ํ๊ฒ ๋๋ฉด Git์ ์๋์ผ๋ก origin์ด๋ผ๋ ์ด๋ฆ์ ์ ์ฅ์์ ๋ถ์ด๊ณ orgin์ผ๋ก๋ถํฐ ์ ์ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ด๋ ค๋ฐ์ ํ master ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ๋ง๋๋๋ฐ, ์ด ํฌ์ธํฐ๋ origin/master๋ผ๊ณ ๋ถ๋ฅด๊ณ ๋ฉ๋๋ก ์กฐ์ข
ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ Git์ ๋ก์ปฌ์ master ๋ธ๋์น๊ฐ origin/master๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ค.
'์ฌ์ฉ์1'์ด ๋ธ๋์น๋ฅผ ์๋ก ๋ง๋ค๊ณ ํ์ผ์ ํ๋ ๋ง๋ค์ด์ ์ปค๋ฐ ํ ํ ์๋ก๋ง๋ ๋ธ๋์น๋ฅผ ํตํด ํธ์ฌ๋ฅผ ํ๋ค. ์ด ์๋ก๋ง๋ ๋ธ๋์น์ ์ด๋ฆ์ dev๋ผ๊ณ ํ์.
'์ฌ์ฉ์2'๊ฐ fetch๋ฅผ ํตํ์ฌ '์ฌ์ฉ์1'์ด Pushํ ๋ด์ฉ์ ๋ฐ์์ค๋ฉด ์๋ก์ด ๋ฆฌ๋ชจํธ ๋ธ๋์น์ธ origin/dev๊ฐ ์์ฑ๋์ด ์๋ค.
'์ฌ์ฉ์2'๋ ์๋ก ๋ฐ์์จ ๋ด์ฉ๊ณผ ๋ก์ปฌ ๋ด์ฉ์ mergeํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด $git merge origin/dev ๋ช
๋ น์ ์ฌ์ฉํ ์ ์๊ณ , ์ฐ๋ฆฌ๋ mergeํ์ง ์๊ณ ๋ฆฌ๋ชจํธ ํธ๋ํน ๋ธ๋์น์์ ์์ํ๋ ์ ๋ธ๋์น๋ฅผ ๋ง๋ค์ด ์์
์ ํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ค๋ค.
$git checkout -b dev origin/dev
์ด๋ ๊ฒ ํ๋ฉด origin/dev ๋ก๋ถํฐ ์์ํ๊ณ ์์ ํ ์ ์๋ dev๋ผ๋ ๋ก์ปฌ ๋ธ๋์น๊ฐ ๋ง๋ค์ด์ง๋ค.
๊ฐ์ ์๋ก ๋ง๋ dev ๋ธ๋์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ธ๋์น๋ฅผ ํ๋์ฉ ์์ฑํ๋ค. ์ฌ๊ธฐ์ ๊ฐ์์ ๋ธ๋์น ์ด๋ฆ์ feature/list์ feature/form์ด๋ผ๊ณ ํ์.
๊ฐ์ ์๋ก ๋ก์ปฌ ์ ์ฅ์์์ ๋ด๋ถ์ ๋ด์ฉ์ ๋ค๋ฅด๊ฒ ์์ ํ๊ณ ๊ฐ์ ์ปค๋ฐ์ ์งํํ๋ค.
์ดํ '์ฌ์ฉ์1'์ด feature/list ๋ธ๋์น๋ก ํธ์ฌ๋ฅผ ์งํํ๊ณ pull request๋ก origin/dev๋ก mergeํด๋ ๋๊ฒ ๋๋ ์์ฒญ์ ๋ณด๋ด๊ณ ์น์ธ์ ๋ฐ๊ฒ๋๋ฉด ๋ฆฌ๋ชจํธ ์ ์ฅ์์์ feature/list๊ฐ origin/dev๋ก merge๋์ด์ง๋ค. ์ดํ์ feature/list๋ธ๋์น๋ merge๋์ด์ก๊ธฐ ๋๋ฌธ์ ์ญ์ ํด๋ ๋๋ค.
๋ฐ๋ ๋ด์ฉ์ด ์๋ ๋ฆฌ๋ชจํธ ์ ์ฅ์์์ '์ฌ์ฉ์ 2'๊ฐ fetch๋ฅผ ์ด์ฉํด ๋ฐ์์จ๋ค. ๋ฐ์์จ ๋ด์ฉ์ ์์ ์ ๋ก์ปฌ ์ ์ฅ์ ๋ด์ ๋ธ๋์น์ธ feature/form์ผ๋ก chekout์ ํ ํ origin/dev๋ฅผ merge ์ํจ๋ค.
๊ฐ์ ๋ถ๋ถ์ ์๋ก ๋ค๋ฅด๊ฒ ์์ ํ ๋ด์ฉ์ด ์๊ธฐ ๋๋ฌธ์ ์ถฉ๋์ด ์ผ์ด๋๊ฒ ๋๊ณ , ์ด ์ถฉ๋์ด ์ผ์ด๋ ๋ถ๋ถ์ fixํด์ค ํ ์ปค๋ฐํ๊ณ feature/form ๋ธ๋์น๋ก ํธ์ฌ๋ฅผ ์งํํ๋ค.
ํธ์ฌ ํ ํ์ pull request๋ก dev๋ก mergeํด๋ ๋๊ฒ ๋๋ ์์ฒญ ํ์ ์น์ธ์ ๋ฐ๊ฒ๋๋ฉด ๋ฆฌ๋ชจํธ ์ ์ฅ์์์ feature/form ๋ธ๋์น๋ฅผ origin/dev๋ก merge๋ฅผ ์งํํ๋ค. ์ดํ์ feature/form ๋ธ๋์น๋ merge๋์๊ธฐ ๋๋ฌธ์ ์ญ์ ํด๋ ๋ฌด๋ฐฉํ๋ค.
์ธ ์ผ๋ ์๊ณ ์ ๋ชฐ๋ผ์ ์ถํ ์ ๋ฆฌ.