.gitignore
ํ์ผ์ ๋ญ๊ฐ์?ammend
, squash
: ์ปค๋ฐ ๊ฐ๊ณ ๋๊ธฐstash
: working tree๋ฅผ ์ ๊น๋ง ์ ์ฅmerge
rebase
merge
Merge conflicts happen when you merge branches that have competing commits, and Git needs your help to decide which changes to incorporate in the final merge.
- About merge conflicts, github docs
merge conflict๋ competing commit์ ๊ฐ์ง๋ ๋ธ๋์น๋ค์ ๋ณํฉํ๋ คํ ๋ ์ผ์ด๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ฌ์ฉ์๊ฐ ์ต์ข ๋ณํฉ์์ ํฌํจํด์ผํ๋ ์ปค๋ฐ์ ๊ฒฐ์ ํด์ฃผ์ด์ผํ๋ค.
Competing Commit์
์ ์๊ธด๋ค.
Git์ merge ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉด, merge conflict๊ฐ ์ผ์ด๋ฌ์ ๊ฒฝ์ฐ ๋ฐ๋์ ์ฐ๋ฆฌ๊ฐ ์ง์ ์ด๋ค ๋ณ๊ฒฝ์ฌํญ์ ์๋ก์ด ์ปค๋ฐ์ ํฌํจ์ํฌ์ง ๊ฒฐ์ ํด์ผํ๋ค.
์๋ฅผ ๋ค์ด, ๋ง์ฝ ๋์ ๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ๋ ํฌ์งํ ๋ฆฌ์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ค styleguide.md
๋ผ๋ ํ์ผ์ ๋์ผ ๋ผ์ธ์ ์์ ํ๋ค๋ฉด, ์ด ๋ ๋ธ๋์น๋ค์ ๋ณํฉํ๋ ค ํ ๋ ์ปจํ๋ฆญํธ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ค. ์ด ๋ ์ฐ๋ฆฌ๋
Git bash๋ฅผ ์ด๊ณ ํด๋น ๋ ํฌ์งํ ๋ฆฌ๋ก ์ด๋ํ๋ค.
cd _REPOSITORY-NAME_
git status
๋ก merge conflict ์ ์ํฅ๋ฐ์ ํ์ผ๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ณธ๋ค. ์ด ์์ ์์๋ styleguide.md
๊ฐ ๊ทธ๋ฌํ ํ์ผ์ด๋ค.
$ git status
> # On branch branch-b
> # You have unmerged paths.
> # (fix conflicts and run "git commit")
> #
> # Unmerged paths:
> # (use "git add ..." to mark resolution)
> #
> # both modified: styleguide.md
> #
> no changes added to commit (use "git add" and/or "git commit -a")
ํด๋น ํ์ผ์ ์ํ๋ ์๋ํฐ๋ก ์ฐ๋ค.
ํ์ผ์ ์ด๊ณ ๋์, merge conflict๊ฐ ์ฒ์ ๋ฐ์ํ ๋ถ๋ถ์ ์ฐพ๊ธฐ ์ํด์ <<<<<<<
๋ฅผ ๊ฒ์ํด๋ณธ๋ค. ๊ทธ ๋ถ๋ถ์ผ๋ก ์ด๋์ ํ๋ฉด
```bash
If you have questions, please
<<<<<<< HEAD
open an issue
=======
ask your question in IRC.
>>>>>>> branch-a
```
์ด๋ฐ ์์ผ๋ก <<<<<<<
๋ค์ ์จ์๋ ์ด๋ฆ(HEAD) base branch์ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ณ , =======
๋ก ๊ตฌ๋ถ๋์ด์๋ ๋ท๋ถ๋ถ์ >>>>>>>
๋ค์ ์จ์๋ ์ด๋ฆ์ ๊ฐ์ง branch์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ ๊ฒ์ด๋ค. ์ด ์์ ์์๋ ํ ์ฌ๋์ด "open an issue"๋ผ๊ณ base ๋๋ HEAD ๋ธ๋์น์์ ๋ณ๊ฒฝ์ ํ๊ฒ์ด๊ณ , ๋ค๋ฅธ ์ฌ๋์ ๊ฐ์ ์ค์์ "ask your question in IRC" branch-a
๋ผ๋ ๋ธ๋์น์์ ๋ณ๊ฒฝ์ ํ ๊ฒ์ด๋ค.
์ปจํ๋ฆญํธ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์์ ์ถฉ๋์ฌํญ๋ค์ ๋ค ์ง์๋ฒ๋ฆฌ๊ณ ์ํ๋ ๋ด์ฉ์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
๊นํฌ๋ผ์ผ์์์ ์์๋ฅผ ๋ง๋ค์ด๋ดค๋ค.
์ผ๋จ ๋ธ๋์น๋ master
์ mergeTest
๊ฐ ์๊ณ , conflictTest
๋ผ๋ ํ์ผ์ ๋์ผ๋ผ์ธ์ ๊ฐ์ ๋ค๋ฅด๊ฒ ์์ ํ๊ณ ์ปค๋ฐํ๋ค.
๊ทธ ํ master
๋ธ๋์น์์ mergeTest
๋ธ๋์น๋ฅผ ๋ณํฉํ๋ ค๊ณ ํ๋
๋ค์๊ณผ ๊ฐ์ด conflict error ๊ฐ ๋ฐ์ํ์๋ค.
์ค๋ฅธ์ชฝ ํจ๋์ ConflictedFiles ์ conflictTest
๋ฅผ ๋๋ธํด๋ฆญํ๋๊น ์๋์ฒ๋ผ ์๋ก์ด ์ฐฝ์ด ๋ด๋ค! ์ถฉ๋ํ๋ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ณด์ฌ์ฃผ๋ ์ฐฝ์ด์๋ค.
๋ณ๊ฒฝ์ฌํญ๋ค ์ค์ ์ํ๋ ๊ฒ์ ์ถ๊ฐ Result์ ์ถ๊ฐํ ์ ์์๋ค.
์ด๋ฐ์์ผ๋ก ๐
๋ค ํ์ผ๋ฉด ์ฐ์ธก ์๋จ์ save
๋ฒํผ์ ๋๋ฌ์ฃผ๋ฉด๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ด์ ํ๋ฉด์ผ๋ก ๋์์ค๊ฒ ๋๋๋ฐ, ํจ๋์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋์ด์์๋ค. ์ถฉ๋์ฌํญ์ ํด๊ฒฐํ์ผ๋ ์๋ก์ด ์ปค๋ฐ์ ๋ง๋ค๊ณ , merge ํด์ฃผ์๋ค.
merge conflict ํด๊ฒฐ๋ ๊นํฌ๋ผ์ผ์ผ๋ก ํ๋ฉด ๋๋ฌด ์ฝ๋น ๐
rebase
๋ธ๋์น ๋ณํฉ ์ปค๋งจ๋์๋ merge
๋ง๊ณ ๋, rebase
๋ผ๋ ๊ฒ์ด ์๋ค. merge
๋์ ๋ฐฉ์์ด ์กฐ๊ธ ๋ค๋ฅธ๋ฐ! ์ง๊ธ๋ถํฐ ์ดํด๋ณด์ ๐คฉ
merge
์ rebase
์๋ ์ฌ์ง์ ๋ณด๊ณ ์ฐจ์ด๋ฅผ ์ค๋ช ์ ํด์ฃผ์ ๊ฒ ์ดํดํ๊ธฐ์ ๋งค์ฐ ์ข์๋ค.
merge
๋ฅผ ๋ณด๋ฉด, ์ด๋ฏธ์ง์์๋ master
๋ธ๋์น์ feature
๋ธ๋์น๋ฅผ ๋ณํฉํด๋ feature
๋ธ๋์น์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ์๋ ์์น์, ์๋ ๋ชจ์ต ๊ทธ๋๋ก ๋จ์์๋ค.
๊ทธ๋ฐ๋ฐ rebase
์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, feature
๋ธ๋์น์ base ์ปค๋ฐ์ด master
์ ์ต์ ์ปค๋ฐ์ด ๋๊ณ , feature
๋ธ๋์น์ ์ปค๋ฐ๋ค์ด master
์ ์ต์ ๋ณ๊ฒฝ์ฌํญ๋ค์ ๋ฐ์ํ๋(?) ์ปค๋ฐ์ผ๋ก ๋ฐ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ค๋ฅธ ์ฐจ์ด๋, ์์๋ก ํ๋ฉด
master
์ feature
๋ฅผ mergeํ ๋๋
$ git checkout master
$ git merge feature
์ด๋ ๊ฒ master
๋ธ๋์น์์ merge
๋ฅผ ์คํํ๋๋ฐ,
feature
์ base commit์ master
๋ก rebaseํ ๋๋
$ git checkout feature
$ git rebase master
์ด๋ฐ ์์ผ๋ก feature
๋ธ๋์น์์ rebase
๋ฅผ ์คํํด์ผ ํ๋ค๋ ์ ์ด๋ค.
rebase
์ ์ฅ๋จ์ ์ฐจ์ด๋ ์๊ฒ ๊ณ ๊ทธ๋ผ rebase
๋ฅผ ์ ์ฌ์ฉํ๋์ง ๋ณด๋ฉด,
๋จ์ ์ผ๋ก๋
rebase
์ merge
๋ฅผ ์ํฉ์ ๋ฐ๋ผ ์ ์ฌ์ฉํด์ผํ๋ค.
pull
& rebase
๊ฐ ํ์คํ ๋ฆฌ๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ๋๋ฐ ์ข๋ค.merge
๋ฅผ ์ฌ์ฉํ๋ค.push
ํ ์ ์ด ์์ ๋ ๐๐ป rebase
rebase
merge
๋ํ์ ์ธ ๋ธ๋์นญ ์ ๋ต์ผ๋ก๋
Git-flow๋ ๋ธ๋์น๋ฅผ ํฌ๊ฒ ๋ค ๊ฐ์ง๋ก ๋๋์ด ๊ฐ๋ฐํ๋ ์ ๋ต์ด๋ค.
๊ฐ์ฅ ์ค์ฌ์ด ๋๋ ๋ธ๋์น๋ main
๋ธ๋์น์ด๋ฉฐ, ๋จธ์ง๋ feature
, release
, hotfix
๋ธ๋์น๋ ์ญ์ ํ๋ค.
master
develop
1) feature (topic)
develop
๋ธ๋์น๋ก๋ถํฐ ๋ถ๊ธฐdevelop
์ ๋จธ์ง ํ ์ญ์ 2) release
3) hotfix
Git-flow๊ฐ Github์์ ์ฌ์ฉํ๊ธฐ์ ๋ณต์กํด์ ๋์จ ๋ธ๋์นญ ์ ๋ต.
master ๋ธ๋์น์ ๋ํ ์ญํ ๋ง ์ ํํ๋ค๋ฉด ๋๋จธ์ง ๋ธ๋์น๋ค์ ๋ํด์๋ ๊ด์ฌํ์ง ์๋๋ค. ์ฆ, hotfix ๋ธ๋์น๋ feature ๋ธ๋์น๋ฅผ ๊ตฌ๋ถํ์ง ์๋๋ค. ๋ค๋ง ์ฐ์ ์์๊ฐ ๋ค๋ฅผ ๋ฟ์ด๋ค. ์ด ๋๋ pull request
๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ค.
์ด ๋ธ๋์นญ ์ ๋ต์ ์์๋ก ๋ฐฐํฌ๊ฐ ์ผ์ด๋๊ณ , CI์ ๋ฐฐํฌ๊ฐ ์๋ํ๋ผ์๋ ํ๋ก์ ํธ์ ์ ์ฉํ๋ค.
์.. ์์ธํ๊ฑด Git ๋ธ๋์นญ ์ ๋ต - ๊ฐ์ฐ๋ฆฌ์ฝ๋ฉ ์ฌ๊ธฐ์ ๋ณด์ฅ
๋์ ๐