๊ทธ๋์ ํํ๋ก์ ํธ ํ์ ๋ ๋๋ ์ฝ๋๋ง ์ง๊ณ ๊ทธ๋ฅ ๊น ๋ฐฐ์ฌ์์ add commit push๋ง ํ์๋ค. ์ฐ๋ฆฌํ ๋ค ์ฌ๋๊บผ ์ฝ๋ ํฉ์น๋๊ฑฐ๋ ๋ณํ๋์ด ํด์ฃผ์ ์ ์์คํธ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํด ๋ณธ ์ ์ ์์๋ค. ์ด์ ๋ถํฐ ์์คํธ๋ฆฌ ๊น์์ ์จ ๋ณด๋๋ฐ ์์ง ์ต์ํ์ง ์์์ ์๋ก ๋ฐฐ์ฐ๋๊ฒ ๋ง๋ค.
๊ฒ ์๋ ๋๋ ์ด์ฐจํผ ์ฐ์ตํ ๊ฑฐ ์ด๊ฒ์ ๊ฒ ๋๋ฌ๋ดค๋ค.
๋ณํฉ๋ ํด๋ณด๊ณ ๋ธ๋์น ์ฒดํฌ์์, ๋ฎ์ด์ฐ๊ธฐ, ๊ฐ์ ๋ก ์ญ์ ๋ฑ ใ ใ ใ
์ด๊ฒ์ ๊ฒ ์๋ฌด๊ฑฐ๋ ๋ค ๋๋ฌ๋ณด๋ค๊ฐ ์๊พธ ์ค๋ฅ๊ฐ ๋๋ค ใ ใ ใ
๊ณ ์ฅ๋๋ฉด ์ปดํจํฐ ๋ฐ๋ฉด ๋ผ~ ํ์ฌ์ปด๋ ์๋๋ฐใ ใ ใ (๋๋ด)
Git ์ ์ฅ์์ ์ฐ๊ฒฐ๋ ํ์ผ์ ์์ ํ๋ฉด ์์ ํ์ ์์ง ์คํ ์ด์ง์ด๋ ์ปค๋ฐ ์ํ์ ๋ ์ฝ๋ ์ผ์ชฝ์ ์กฐ๊ทธ๋งฃ๊ฒ ์ธ๋ก์ค์ด ๋ฌ๋ค.
์ด๊ฑธ Diff Decorations์ด๋ผ๊ณ ํ๋ค.
Diff Decorations๋ ํ์ผ์ด Git ์ ์ฅ์์ ์ฐ๊ฒฐ๋์ด ์์ ๋ ํ์ผ์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์์์ด๋ ์์ด์ฝ ๋ฑ์ผ๋ก ํ์ํด์ ์ฝ๋์ ์ถ๊ฐ, ์์ , ์ญ์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค. ์ฝ๋์ ์ค ๋ฒํธ ์ผ์ชฝ ์ฌ๋ฐฑ(Gutter)์ ๋์ค๊ณ ํด๋ฆญํ๋ฉด ์ํ ๋ณํ๋ฅผ ๋ณด์ฌ์ค๋ค.
์ด๋ก์ ์ค : ์๋ก ์ถ๊ฐ๋ ์ฝ๋
Git์ ์คํ
์ด์ง๋๊ฑฐ๋ ์ปค๋ฐ๋ ์ ์ด ์๋ ์๋ก์ด ๋ผ์ธ
๋
ธ๋์(์ฃผํฉ์)์ค: ๊ธฐ์กด ์ฝ๋๊ฐ ์์ ๋ ๊ฒฝ์ฐ
๋นจ๊ฐ์: ์ญ์ ๋ ์ฝ๋
Diff Decorations ํ์ฑํ/๋นํ์ฑํ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ
Ctrl + , ๋๋ Cmd + ,๋ฅผ ๋๋ฌ์ Settings ์ด๊ธฐ
๊ฒ์์ฐฝ์ diffEditor.decorations ์
๋ ฅ
์ค์ ์์ Editor > Diff: Decorations๋ฅผ ํ์ฑํ / ๋นํ์ฑํ
๋ค์ด๋ ํธ JSON ์ค์ : settings.json ํ์ผ์์
"diffEditor.decorations": false ๋ก๋ ๊ฐ๋ฅ
Overwrite ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์๋ก์ด ๋ฐ์ดํฐ๋ก ๋์ฒดํ๋ ์์
Copy Reverting์ ํ์ผ์ ๋ณต์ฌํ์ฌ ์ด์ ์ํ๋ก ๋๋๋ฆฌ๋ ์์
ํ์ฌ hello.md ์์ ๊น์ง ํ๋๋ฐ ์ฌ๊ธฐ์ ๋ญ๊ฐ ๋ง์์ ์๋ค์ด์ ์ด์ ์์ ๋ด์ฉ์ผ๋ก ์ผ๋จ ๋๋์์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์์ํด์ผ ํ ๊ฒ ๊ฐ๋ค. ํ์ฌ ์์ ํ ๋ด์ฉ์ ๊ทธ๋๋ก ๋๋๊ณ hello.md ํ์ผ ์์ฑ์์ ์๋ก ์์ํ๊ณ ์ถ๋ค.
hello.md ์ฐํด๋ฆญ > ๋ธ๋์น ์์ฑ
Git ๋ธ๋์น ๋ณํฉํ๊ธฐ
๋ณํฉ(merge)์ด๋?
ํ๋์ ๋ธ๋์น๋ฅผ ํ์ฌ ๋ธ๋์น์ ํฉ์น๋ ๊ฒ์ ๋ณํฉ(merge) ๋ผ๊ณ ํ๋ค.
ํ์ฌ ๋ธ๋์น๋ ํค๋(HEAD) ๋ธ๋์น๋ผ๊ณ ํจ
์๋ฅผ ๋ค์ด์ HEAD๋ธ๋์น๊ฐ main์ด๊ณ ์ฌ๊ธฐ์ version2 ๋ธ๋์น๋ฅผ ๋ณํฉํ๋ฉด version2์ ๋ด์ฉ์ด main์ ๋ฐ์๋๊ฒ ๋๋ค.
๋ณํฉ์ ์์ฃผ ๋ฐ์ํ๋ ์ํฉ?
Learn Git Branching
https://learngitbranching.js.org/?locale=ko
์ฌ๊ธฐ์ ์ฐ์ต ๊ฐ๋ฅ
๋ณํฉ(merger)๊ณผ ์ถฉ๋
main์ ์ ํํ๊ณ version3๋ฅผ ๋ฉ์ธ์ ๋ณํฉํ๋ ค๊ณ ํ๋๋ฐ ์ถฉ๋์ด ๋ฌ๋ค.
๋ถํ์ํ ๋ถ๋ถ ์๋์ผ๋ก ์ง์ด๋ค.
์์คํธ๋ฆฌ๋ก ๊ฐ์ ์ปค๋ฐ
ํธ์ฌํ๊ณ ์ด์ ๋ฒ์ 3๋ ์ญ์ ํด๋ ๋๋ค.
๊ทธ๋ฐ๋ฐ ํธ์ฌ๊ฐ ์๋๋ค.
์ค๋ฅ๋ฉ์ธ์ง
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --set-upstream origin main:main Pushing to ๊น์ ์ฅ์URL To ๊น์ ์ฅ์URL ! [rejected] main -> main (non-fast-forward) error: failed to push some refs to ๊น์ ์ฅ์URL hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. If you want to integrate the remote changes, hint: use 'git pull' before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
์ค๋ฅ ๋ฉ์์ง๋ ๋ก์ปฌ ๋ธ๋์น์ ์๊ฒฉ ๋ธ๋์น ๊ฐ์ ํ์คํ ๋ฆฌ๊ฐ ์ผ์นํ์ง ์์ ๋ ๋ฐ์ํ๋ค. ์ฆ, ์๊ฒฉ main ๋ธ๋์น๊ฐ ๋ก์ปฌ main ๋ธ๋์น๋ณด๋ค ๋ ์์ ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์๊ฒฉ ๋ธ๋์น์ ๋ณ๊ฒฝ ์ฌํญ์ ํตํฉํด์ผ ํ๋ค.
Fetch
Pull > ์๊ฒฉ ๋ธ๋์น๋ฅผ origin/main ๋ก ์ค์ > Pull with rebase ํ๊ณ Push
์ด์ version3์ ์ญ์ ํด ์ฃผ์๋ค.
์ง๊ธ ํท๊ฐ๋ฆฌ๋ ๊ฑด origin/main๋ถ๋ถ
๊ณ์ origin/main ์ ๋ณํฉ์ด ์๋๊ณ ์๋์ชฝ์ ์๊ธธ๋ ์ฐพ์๋ดค๋ค.
origin/main์ GitHub ๊ฐ์ ์๊ฒฉ ์ ์ฅ์์ ์๋ main ๋ธ๋์น์ ์ต์ ์ํ <
๋ก์ปฌ ๋ธ๋์น์ ์๊ฒฉ ๋ธ๋์น์ ์ํ๊ฐ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์,
origin/main์ ๋ก์ปฌ์์ ์ง์ ์์ ํ ๋ด์ฉ์ด ์๋๋ผ, GitHub์ ๋ง์ง๋ง์ผ๋ก ํธ์๋ ๋ด์ฉ์ ๋ํ๋ธ๋ค.
๊นํ๋ธ์ main์ pull ํด์ฃผ๋๊น ์ ์๋์ ์๋ origin/main์ด ๋ค์ ๋งจ ์๋ก ์ฌ๋ผ์ด
์ฒดํฌ์์ํ ๋ธ๋์น๋ ๋ณํฉ ๋์์ด ์๋๋ผ ๋ณํฉ์ด ์ผ์ด๋ ๋ธ๋์น์ด๋ค.
์ฆ, ๋ณํฉ์ ์คํํ๋ ค๋ฉด ๋จผ์ ๋ณํฉ ๋์์ด ๋ ๋ธ๋์น๋ฅผ ์ฒดํฌ์์ํด์ผ ํ๋ค.
๋ฐ๋ผ์, main ๋ธ๋์น์ version4 ๋ธ๋์น๋ฅผ ๋ณํฉํ๋ ค๋ฉด,
๋จผ์ main ๋ธ๋์น๋ก ์ฒดํฌ์์ํ ํ version4 ๋ธ๋์น๋ฅผ ๋ณํฉํด์ผ ํ๋ค.
๊ทธ๋ผ main์ผ๋ก version4๊ฐ ์ฌ๋ผ์์ main ์ ๋ณํฉ
์ฒดํฌ์์ ํ๋ฉด ์ด๋ ๊ฒ ์์ ๋๊ทธ๋ผ๋ฏธ๊ฐ ์๊น
master์ ์ฒดํฌ์์ ํ๊ณ version4 ๋๋ฌ์ ๋ณํฉํ๋ฉด version4๊ฐ master๋ก ๋ณํฉ๋จ
๊ทผ๋ฐ ์ด ๋ version4๊ฐ ๋ด๋ ค๊ฐ๋๊ฒ ์๋๊ณ master์ด version4 ์์ผ๋ก ์ฌ๋ผ์ด
origin/main ๊ณผ master์ด ํจ๊ป ์์๋๋ฐ master์ ์ฒดํฌ์์ํ ์ํ์์
version4 ์ฐํด๋ฆญ> ๋ณํฉ ํด ์ค
๊ทธ๋ผ ๊ฒฐ๊ณผ๋ ์์ ๊ฐ๋ค (fast-forward ์ํฉ)
์ด ์ํ์์ version3๋ฅผ master ๋ก ๋ณํฉ
์๋ก ๋ค๋ฅธ ํ์ผ์ด๋ผ ์ถฉ๋ ์ ๋จ
์ด๋ฒ์๋ master ์ด version3์ด๋ ๋๋ํ ์๋๊ฒ ์๋๋ผ ์๋ก ์ฌ๋ผ๊ฐ
Fast Forward ๋ณํฉ vs ์ผ๋ฐ์ ์ธ ๋ณํฉ
version3์ master ๋ธ๋์น์ ๋ณํฉํ๋๋ฐ master ๋ธ๋์น๊ฐ version3 ์์ด ์๋๋ผ ์๋ก ์ฌ๋ผ๊ฐ ์ด์ ? ๋ณํฉ ๋ฐฉ์์ ๋ฐ๋ผ fast forward ๋ณํฉ๊ณผ ์ผ๋ฐ์ ์ธ ๋ณํฉ(merge)์์ ์ปค๋ฐ ํ์คํ ๋ฆฌ๊ฐ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ด๋ค.
master ๋ธ๋์น ์ฒดํฌ์์ํ ์ํ์์ version3 ๋ธ๋์น๋ฅผ master์ ๋ณํฉํ๋ฉด, version3์ ์ปค๋ฐ์ด master์ ํตํฉ๋๋ฉด์ ์๋ก์ด ๋ณํฉ ์ปค๋ฐ์ด ์์ฑ๋๋ค. ์ด ๋ณํฉ ์ปค๋ฐ์ด master ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ผ๋ก ์ฌ๋ผ๊ฐ๊ฒ ๋๋ฉฐ, master์ด version3์ ์์ด ์๋๋ผ ์๋ก ์ด๋ ํ๋ค. (๋ณํฉ ์ปค๋ฐ์ด master ๋ธ๋์น์ ๊ฐ์ฅ ์ต์ ์ปค๋ฐ์ผ๋ก ์์ฑ๋๋๊น)
๋ฐ๋๋ก fast forwardํ์์ผ๋ก version3์ master์ ๋ณํฉํ๋ฉด master์ด ์๋ก ์์ฌ๋ผ์ค๊ณ ๋ณํฉํ ๋ฒ์ ์์ ๋๋ํ ์์นํ๋ค.
fast forward ๋ณํฉ
fast forward ๋ณํฉ์ master ๋ธ๋์น๊ฐ ์ง์ ์ ์ผ๋ก version3 ๋ธ๋์น์ ์ปค๋ฐ์ ์ด์ด์ ๋ฐ์๋ค์ผ ์ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ถฉ๋ ์ํ๋ ์ ๋ค. master ๋ธ๋์น๊ฐ version3์ ์ปค๋ฐ๋ค์ ๊ทธ๋๋ก ์ด์ด ๋ฐ์์ ๋ฐ์ํ๋ฏ๋ก๋ณํฉ ์ปค๋ฐ์ด ์์ฑ๋์ง ์๊ณ , ๋ ๋ธ๋์น๊ฐ ๋๋ํ"๋ณด์ธ๋ค. ์ฆ master ๋ธ๋์น๊ฐ version3 ๋ธ๋์น ์ปค๋ฐ์ ๊ทธ๋๋ก ํฌํจํ ์ํ๊ฐ ๋๋ค.