ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฌ๋ฌ branch๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ๋ก์ปฌ์์ ์์ ํ ํ์ผ์ด ๋ ๋ผ๊ฐ๋ ์ด์๊ฐ ์๊ฒผ๋ค.
๊ทธ๋์ ๊ทธ๊ฒ์ ํด๊ฒฐํ๋ฉด์ ์ด๋ฌํ ์ํฉ์์ ์๊ธธ ์ ์๋ ์ถฉ๋ ์ด์๋ค๊ณผ ๊ทธ๊ฒ๋ค์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด ๋ณด์๋ค.
๐ ๏ธ git pull ์ ์ถฉ๋ (Merge Conflict)
์ด์
- ๋ก์ปฌ์์ ์์ ํ ํ์ผ์ด ์๊ฒฉ ์ ์ฅ์(๋ฆฌ๋ชจํธ)์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ถฉ๋ํ๋ ๊ฒฝ์ฐ ๋ฐ์
- git pull ์ ์๋ ๋ณํฉ์ด ์คํจํ๊ณ , ์ถฉ๋ ํด๊ฒฐ์ด ํ์ํจ
ํด๊ฒฐ ๋ฐฉ๋ฒ
- git status ๋ช ๋ น์ด๋ฅผ ํตํด ์ถฉ๋์ด ๋ฐ์ํ ํ์ผ ๋ชฉ๋ก์ ํ์ธ
- ํด๋น ํ์ผ์ ์ด์ด <<<<<<< HEAD, =======, >>>>>>> branch_name ๋ฑ์ ์ถฉ๋ ํ์๋ฅผ ๋ณด๊ณ ์ง์ ์์
- git add "์ถฉ๋ ํด๊ฒฐ ํ์ผ" ์งํ
- git commit -m "Resolve merge confilct"์งํ
๐ ๏ธ git pull ์ fast-forward vs merge commit ๋ฌธ์
์ด์
- git pull ์ fast-forward ๋ณํฉ๊ณผ merge commit ์ค ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ณํฉํ ์ง ์ ํํด์ผ ํจ
- merge commit์ด ํ์ ์๋ ์ํฉ์์๋ ์๋์ผ๋ก ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ์์
ํด๊ฒฐ ๋ฐฉ๋ฒ
- git pull --rebase๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ merge commit ์์ด ๋ฆฌ๋ฒ ์ด์ค๋ก ๊น๋ํ๊ฒ ๋ณํฉ ๊ฐ๋ฅ:
git pull --rebase
๐ ๏ธ git push ์ rejected (non-fast-forward)
์ด์
- ๋ค๋ฅธ ํ์์ด ์๊ฒฉ ์ ์ฅ์๋ฅผ ์ ๋ฐ์ดํธํ๋๋ฐ, ๋ด ๋ก์ปฌ ๋ธ๋์น๊ฐ ๋ค์ฒ์ง ๊ฒฝ์ฐ ๋ฐ์
- git push ์ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ธ:
-
! [rejected] main -> main (non-fast-forward)
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ก์ปฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ฐ์ ์ ์ผ๋ก ์ปค๋ฐ ๋๋ ์คํ์
-
git stash
-
- โจ์ต์ ์๊ฒฉ ๋ณ๊ฒฝ ์ฌํญ ๊ฐ์ ธ์ค๊ธฐ(--rebase ์ฌ์ฉ ์, ๋ด ๋ณ๊ฒฝ ์ฌํญ์ด ์ต์ ์ปค๋ฐ ์์ ๋ค์ ์ ์ฉ๋จ.)
-
git pull --rebase
-
- ์คํ์ ๋ณต์ ํ ์ถฉ๋ ํด๊ฒฐ (ํ์ ์)
- git stash pop
- ํธ์ ์ฌ์๋
๐ ๏ธ git clone ํ git pull ์ "fatal: refusing to merge unrelated histories"
์ด์
- ์๋ก ๋ค๋ฅธ Git ์ด๋ ฅ์ ๊ฐ์ง ํ๋ก์ ํธ๋ฅผ ํฉ์น๋ ค ํ ๋ ๋ฐ์
ํด๊ฒฐ ๋ฐฉ๋ฒ
- --allow-unrelated-histories ์ต์ ์ ์ถ๊ฐํ์ฌ ๊ฐ์ ๋ณํฉ:
- ๋จ, ์ด ์ต์ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ๋์ ๋ณํฉ ์ถฉ๋์ ํ์ธํ๊ณ ์ ๋ฆฌํด์ผ ํจ
git pull origin main --allow-unrelated-histories
๐ ๏ธ ํน์ ๋ธ๋์น๋ง git pull ํ๋ ค๋๋ฐ ์ ์ฒด ๋ธ๋์น๊ฐ ์ ๋ฐ์ดํธ๋จ
์ด์
- git pull ํ๋ฉด fetch + merge๊ฐ ๋์์ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์์น ์๋ ๋ณ๊ฒฝ์ด ํฌํจ๋ ์ ์์.
ํด๊ฒฐ ๋ฐฉ๋ฒ
ํน์ ๋ธ๋์น๋ง ๊ฐ์ ธ์ค๋ ค๋ฉด git fetch ํ git merge๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์คํ :
git fetch origin feature-branch git merge origin/feature-branch
๋๋ ๋จ์ํ ์๊ฒฉ์ ์ต์ ์ํ๋ง ํ์ธํ๋ ค๋ฉด :
git fetch --prune
๐ ๏ธ ์๊ฒฉ ๋ธ๋์น ์ญ์ ํ ๋ก์ปฌ์์ git pull ์ ๋ธ๋์น๊ฐ ๋จ์์์
์ด์
- ์๊ฒฉ ์ ์ฅ์์์ ๋ธ๋์น๋ฅผ ์ญ์ ํ๋๋ฐ ๋ก์ปฌ์์ ์ฌ์ ํ ๋ณด์ด๋ ๋ฌธ์ .
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ก์ปฌ์์ ์๊ฒฉ ์ญ์ ๋ ๋ธ๋์น ์ ๋ฆฌ
git fetch --prune
- ํน์ ์ง์ ์ญ์
git branch -d branch-name
๐ ๏ธ gitignore ์ ์ฉ์ด ์๋จ
์ด์
- .gitignore์ ์ถ๊ฐํ์์๋ ๋ถ๊ตฌํ๊ณ ํน์ ํ์ผ์ด ๊ณ์ Git์ ํฌํจ๋จ.
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ด๋ฏธ Git์ ์ถ์ ๋ ํ์ผ์ .gitignore์ ์ถ๊ฐํด๋ ๋ฌด์๋์ง ์์.
ํด๋น ํ์ผ์ ์บ์์์ ์ ๊ฑฐ ํ ๋ค์ .gitignore ์ ์ฉ:git rm -r --cached <ํ์ผ๋ช ๋๋ ๋๋ ํ ๋ฆฌ๋ช >
๋ค์ ์ปค๋ฐ ํ ํธ์:
๐ก ์ค๋ ๋ฐ์ํ ๋ฌธ์ ์ ํด๊ฒฐ) git pull --rebase๋ฅผ ์ด์ฉ!
์ฐ๋ฆฌ๋ dev์ 2๋ช ์ด์์ ๋ฆฌ๋ทฐ์ด๊ฐ ์น์ธํ ์ฝ๋๋ฅผ ์ฌ๋ฆฌ๊ณ ์ค๊ฐ์ ๊ณ์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ค.
๊ทธ๋, ๋ด ๋ก์ปฌ์ ์๋ก์ด ์ฝ๋์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ถฉ๋ํ๋ ์ด์๊ฐ ์๊ฒผ๋ค.
๊ทธ๋์ ๋๋ ์ถฉ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ rebase๋ฅผ ์ฌ์ฉํด์ ๊ทธ ๋ค๋ถํฐ๋ ์์ ํ๊ฒ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์๋ค.
rebase์ ๋์ ๊ณผ์ :
- ์๊ฒฉ ๋ธ๋์น์ ์ต์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์ ธ์ด (git fetch origin dev)
- ๋ด ๋ก์ปฌ ์ปค๋ฐ๋ค์ ์์๋ก ์ ์ฅ (git stash ์ ๊ฐ์ ํจ๊ณผ)
- ์๊ฒฉ ๋ธ๋์น (origin/dev)๋ฅผ ๋ด ๋ก์ปฌ ๋ธ๋์น๋ก Fast-Forward
- ์ ์ฅํด ๋ ๋ด ๋ก์ปฌ ์ปค๋ฐ๋ค์ ์ต์ ๋ธ๋์น ์์์ ํ๋์ฉ ๋ค์ ์ ์ฉ
o---o---A (origin/dev ์ต์ ์ปค๋ฐ)
\
B'--C' (๋ด ๋ก์ปฌ ์์
์ด ์ต์ ์ปค๋ฐ ์๋ก ์ฌ์ ์ฉ๋จ)
git pull --rebase ์ ์ฅ์ :
- ๋ถํ์ํ merge commit ๋ฐฉ์ง
- ์ด๋ ฅ์ด ๊น๋ํ๊ฒ ์ ๋ฆฌ๋จ (ํ ์ค๋ก ์ด์ด์ง๋ commit log)
- ํ์ ์ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ถฉ๋ ๋ฐฉ์ง
์ฃผ์ ์ฌํญ
- rebase๋ ๋ด ๋ก์ปฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ปค๋ฐ์ฒ๋ผ ๋ค์ ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ์๊ฒฉ์ ํธ์๋ ๊ฒ์ ๋ฆฌ๋ฒ ์ด์ค ํ๋ฉด ์๋จ
- ์ถฉ๋ ๋ฐ์ ์ ์ง์ ํด๊ฒฐ ํ git rebase --continue ํ์
๋ฐ๋ผ์
git pull origin dev --rebase
๋ช ๋ น์ด๋ ๋ถํ์ํ merge commit์ ํผํ๊ณ ๊น๋ํ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ ์งํด์ค ์ ์์ผ๋ฉฐ ์ถฉ๋์ ์ค์ฌ์ฃผ๋ ๋ช ๋ น์ด๋ก
ํ ํ๋ก์ ํธ๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ ๋ ์ ์ฉํ๊ฒ ์ธ ์ ์๋ค.
'๋ฐฑ์๋ > Git' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Git hub Issue template ๋ง๋ค๊ธฐ (0) | 2025.04.11 |
---|