์ค๋ต๊น ๐ช - ํ์ ํธ #3: Fork๋ ๋ ํฌ๋ฅผ ๋ฉ์ธ ๋ ํฌ์ ๋๊ธฐํํ๋ฉฐ Merge Conflict ํด๊ฒฐํ๊ธฐ
by its_TIMI๐ Fork ๊ธฐ๋ฐ ํ์ ์์ Merge Conflict, ํผํ ์ ์๋ค๋ฉด ๋น ๋ฅด๊ฒ ํด๊ฒฐํ์!
Git์ ์ด์ฉํ ํ์ ์์ Fork๋ ๋ ํฌ์ ๋ฉ์ธ ๋ ํฌ๋ฅผ ๋๊ธฐํํ ๋ Merge Conflict๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํํ ์ผ์ด๋ค.
ํ์ง๋ง ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ตํ๋ฉด, ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ค.
์ค๋์ Forkํ ๋ ํฌ๋ฅผ ๋ฉ์ธ ๋ ํฌ์ ๋๊ธฐํํ๋ฉด์ ๋ฐ์ํ Merge Conflict๋ฅผ ํ ๋ฒ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด์. ๐
๐ Merge Conflict ํด๊ฒฐ ๊ณผ์
1๏ธโฃ Fork๋ ๋ ํฌ ํด๋ก
git clone https://github.com/my-github-id/my-forked-repo.git
โ ๋ด GitHub ๊ณ์ ์ Fork๋ ๋ ํฌ๋ฅผ ๋ก์ปฌ๋ก ๋ณต์
2๏ธโฃ ์์ ํ ๋ธ๋์น๋ก ์ ํ
git switch my-feature-branch
3๏ธโฃ ๋ฉ์ธ ๋ ํฌ ์ต์ ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ
git remote add upstream https://github.com/original-repo/main.git
git fetch upstream
โ ๋ฉ์ธ ๋ ํฌ์ ์ต์ ๋ธ๋์น๋ฅผ ๊ฐ์ ธ์ ๋๊ธฐํ ์ค๋น
4๏ธโฃ Merge ๊ณผ์ ์์ ์ถฉ๋ ๋ฐ์
git merge upstream/main
๐จ ๋ณํฉ ์ค ์ถฉ๋ ๋ฐ์!
์๋ ๋ณํฉ์ด ์คํจํ์ต๋๋ค. ์ถฉ๋์ ๋ฐ๋ก์ก๊ณ ๊ฒฐ๊ณผ๋ฌผ์ ์ปค๋ฐํ์ญ์์ค.
5๏ธโฃ ํ ๋ฒ์ ๋ด ์ฝ๋(ours)๋ก ์ถฉ๋ ํด๊ฒฐ
git checkout --ours $(git diff --name-only --diff-filter=U)
โ ๋ชจ๋ ์ถฉ๋ ํ์ผ์ ํ ๋ฒ์ ๋ด ์ฝ๋(ours)๋ก ์ ์ง
6๏ธโฃ ๋ณ๊ฒฝ ์ฌํญ ์ ๋ฆฌ ํ ์ต์ข ํธ์
git add .
git commit -m "Fix: Merge Conflict ํด๊ฒฐ"
git push origin my-feature-branch
โ Fork๋ ๋ ํฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ณ PR์์ ์ถฉ๋ ์์ด ๋ณํฉ ๊ฐ๋ฅ! ๐
๐ ๋ง๋ฌด๋ฆฌํ๋ฉฐ…
โ Merge Conflict๋ฅผ ํด๊ฒฐํ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํ๋ค๋ฉด?
โก๏ธ ์ค๊ธํธ #7: Git Merge Conflict๋? ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ฐธ๊ณ
โ Fork ๊ธฐ๋ฐ ํ์ ์์ Merge Conflict๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ตํ๋ฉด,
๋ ํจ๊ณผ์ ์ผ๋ก Git ํ์ ์ ํ ์ ์๋ค!
๐ ๊ด๋ จ ์ค๋ต๊น ์ฝํ ์ธ ๋ ํจ๊ป ํ์ธํด๋ณด์ธ์!
• ๐ ์ค๋ต๊น ๐ช - ํ์ ํธ #2: PR ์์ฑ ์ ๋ฆฌ๋ทฐ์ด ์๋ ์ง์ ํ๋ ๋ฒ (CODEOWNERS ํ์ฉ)
๋ค์ ์ค๋ต๊น๋ ๊ธฐ๋ํด ์ฃผ์ธ์! ๐ฏ
'์ค๋ต ๊น๐ช > ํ์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ธ๋ก๊ทธ์ ์ ๋ณด
Dev_TIMI
its_TIMI