๐ŸŽ Github ์‚ฌ์šฉ๋ฒ• 3. ๋ธŒ๋žœ์น˜๋กœ ํ˜‘์—…ํ•˜๊ธฐ (pull request)

์œ ์ง„ยท2025๋…„ 5์›” 22์ผ

git

๋ชฉ๋ก ๋ณด๊ธฐ
10/13

ํ”„๋กœ์ ํŠธ์— ์‹ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,
๊ดœํžˆ main๋ธŒ๋žœ์น˜์— ๋งŒ๋“ค๊ณ  merge๋‚˜ pushํ•˜๋‹ค๊ฐ€ ์ถฉ๋Œ๋‚˜๊ณ  ๊ทธ๋Ÿฌ๋ฉด์„œ ๊ดœํžˆ ์ฝ”๋“œ ๋ง์น˜์ง€ ๋งˆ์‹œ๊ณ 
๋”ฐ๋กœ branch๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์„œ ๊ธฐ๋Šฅ์„ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋ฐฐ์› ์—ˆ๋‹ค.

์ด๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ branch๋ฅผ ์ œ์ž‘ํ•˜๊ณ  ์‚ญ์ œํ•˜๊ณ  ์ด๋Ÿฐ์ €๋Ÿฐ ์ˆ˜์ •์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ
๋กœ์ปฌ์—์„œ ๋งŒ๋“ค๊ณ  ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋ฌด๋ž˜๋„ ๊ฐ„ํŽธํ•˜๋‹ค.

local์—์„œ branch๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž

์ด๋ฏธ ์ด์ „์— ๋ฐฐ์› ๊ฒ ์ง€๋งŒ ์•ž์œผ๋กœ์˜ ์‹ค์Šต์„ ์œ„ํ•ด์„œ branch๋ฅผ ํ•˜๋‚˜ ์ œ์ž‘ํ•ด๋ณด์ž.

์šฐ์„  ์ด์ „์— ๋งŒ๋“  git_lesson ํด๋”์— ๋“ค์–ด๊ฐ€์„œ git pull https://github.com/dbwls99706/lesson.git์„ ์ž…๋ ฅํ•ด์ฃผ์—ˆ๋‹ค.

์ด์ œ ์—ฌ๊ธฐ์„œ ๊ฐ•์˜์—์„œ์ฒ˜๋Ÿผ mining์ด๋ผ๋Š” branch๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ฒ ๋‹ค.

commit์„ ๋ช‡ ๋ฒˆ ํ•ด๋ณด๋ผ๊ณ  ํ•ด์„œ d๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ ,
conflict๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋„ ๋‹ค์‹œ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด
aํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„๋„ ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋‹ค.

์ด์ œ ๋‹ค์‹œ main์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๊ฑฐ๊ธฐ์„œ๋„ aํŒŒ์ผ ์ฒซ์ค„์„ ์ˆ˜์ •ํ•˜๊ณ  commitํ•ด๋ณธ๋‹ค.

Pull Requestํ•ด๋ณด๊ธฐ

์ด์ œ mining branch๋ฅผ ํ•œ ๋ฒˆ pushํ•ด๋ณด์ž.

pushํ•˜๊ณ  ๋‚˜๋ฉด ์ด๋Ÿฐ ์‹์œผ๋กœ mining branch๊ฐ€ push๋๋‹ค๊ณ  ๋œฌ๋‹ค.

๊ทผ๋ฐ ์ด์ œ mining branch์—์„œ ๋งŒ๋“  ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ์ž˜๋ผ์„œ main์— ํ•ฉ์น˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •์„ ํ•˜์ž.

local์—์„œ ํ•ฉ์ณ์„œ pushํ•ด๋„ ๋˜๊ฒ ์ง€๋งŒ
ํ˜‘์—…์„ ํ•  ๋•Œ๋Š” mergeํ•˜๊ธฐ ์ „์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

์ด๋•Œ๋ฌธ์— branch๋ฅผ mergeํ•  ๋•Œ๋Š” ์˜จ๋ผ์ธ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
๊ทธ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์ € pull request๋‹ค.

์ด์ œ ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•ด์„œ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด

์ด๋ ‡๊ฒŒ ๋œจ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ New pull request๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๊ฒ ๋‹ค.

์—ฌ๊ธฐ์„œ ์–ด๋–ค ๋ธŒ๋žœ์น˜๋ฅผ ์–ด๋””๋‹ค๊ฐ€ ํ•ฉ์น  ์ง€ merge ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

๋‚˜๋Š” main ๋ธŒ๋žœ์น˜์— mining์„ ํ•ฉ์น  ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์„ ํƒํ•ด๋‘๋ฉด ์•„๋ž˜์ชฝ์—

commit ๋‚ด์—ญ ๊ฐ™์€ ๊ฒƒ๋„ ๋œจ๊ณ  ๊ทธ๋Ÿฌ๋Š”๋ฐ

์ž˜ ๋ดค๋‹ค ์‹ถ์œผ๋ฉด Create pull request๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด์ž.

๋Œ“๊ธ€๋„ ๋‹ฌ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ฌ์•„์ฃผ๊ณ  ๋‹ค์‹œ Create pull request ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด

์ด๋ ‡๊ฒŒ ๋œจ๋Š”๋ฐ a๋ฅผ ์ˆ˜์ •ํ–ˆ๋Š”๋ฐ conflict๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋Ÿฌ๊ณ ๋ณด๋‹ˆ main ๋ธŒ๋žœ์น˜๋ฅผ ์ˆ˜์ •ํ•ด๋†“๊ณ  pushํ•˜์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฐ€๋ณด๋‹ค.
์•„๋ฌดํŠผ ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ 

๋งŒ์•ฝ conflict๊ฐ€ ๋œฌ๋‹ค๊ณ  ํ•˜๋ฉด

์ด๋ ‡๊ฒŒ ๋œจ๋Š”๋ฐ ์ €๊ฑธ ๋ˆŒ๋Ÿฌ์„œ ํ•ด๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ˆ„๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ๋ณด์ด๋Š”๋ฐ ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋‚จ๊ธธ์ง€ ์•Œ์•„์„œ ์ž˜ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค.

๋‚œ ์ €๊ฒŒ ์•ˆ ๋–ด์œผ๋‹ˆ๊นŒ ๊ทธ๋ƒฅ ์ปจํŽŒํ•ด์ฃผ๊ฒ ๋‹ค.

mergeํ•  ๋•Œ ์ด๋ ‡๊ฒŒ 3-way merge์™€ squash and merge, Rebase and merge๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ
๋‚œ ๊ทธ๋ƒฅ 3-way๋ฅผ ํ–ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํŒŒ์ผ์ด ์ž˜ ํ•ฉ์ณ์กŒ์Œ์„ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

์ด์ œ ๋‹ค์‹œ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ pullํ•ด๋ณด๋ฉด conflict๊ฐ€ ๋œจ๋Š”๋ฐ ์ž˜ ํ•ด๊ฒฐํ•ด์ฃผ๊ณ 
git log --oneline --graph๋ฅผ ์ณ๋ณด๋ฉด

์ด๋ ‡๊ฒŒ ์ด์ „์— ํ–ˆ๋˜ ๊ฑฐ๋ž‘ ์ด๊ฒƒ์ €๊ฒƒ ๋งŽ์ด ๋‚˜์˜ด์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ƒฅ ๊น”๋”ํ•˜๊ฒŒ squashํ•  ๊ฑธ ๊ทธ๋žฌ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€