์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[git] ์ƒ์กด์„ ์œ„ํ•œ git : Git๊ณผ ๊ด€๋ จ๋œ ํ˜‘์—…์˜ ๋ชจ๋“  ๊ฒƒ

๐Ÿ˜Ž ์ง€์‹ in Action/Git, Jira ๐Ÿ› ๏ธ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2024. 12. 31. 20:59

๋ณธ๋ฌธ

์ด์ „์— ๋ธ”๋กœ๊ทธ์— " ์ƒ์กด์„ ์œ„ํ•œ Git" ์ด๋ผ๋Š” ์ฃผ์ œ๋กœ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ๋ฐœํ–‰ํ•œ ์ ์ด ์žˆ๋‹ค

์ด๋ฒˆ ๊ธ€์€ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์™œ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋Š”์ง€ ์™€๋‹ฟ๊ฒŒ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค


 

Q. ์–ด! ์›๊ฒฉ ๋ธŒ๋žœ์น˜(ํƒ€์ธ๊ณผ ๊ณต์œ ๋˜์–ด ์žˆ์Œ)์˜ ์ปค๋ฐ‹์„ ์ทจ์†Œํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”
reset๊ณผ revert์ค‘์— ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?

 

 

๋‘ ๋ช…๋ น์–ด์˜ ์ฐจ์ด์ ์„ ์˜ˆ์‹œ๋กœ ์•Œ์•„๋ณด์ž 

๋‘˜ ๋‹ค ์ทจ์†Œํ•˜๋Š” ๋ช…๋ น์–ด์ง€๋งŒ revert๋Š” ์ปค๋ฐ‹ ์ทจ์†Œ๋ฅผ ๋‚ด์—ญ์œผ๋กœ ๋‚จ๊ธด๋‹ค

 

 

reset์„ ์ง„ํ–‰ํ•ด๋ณด๋„๋ก ํ•˜์ž

 

 

์ดˆ๊ธฐ ์ƒํƒœ์—์„œ reset์„ ์ง„ํ–‰ํ•ด๋ณด์ž

 

 

 

 

์ž˜๋ชป๋œ ์ปค๋ฐ‹์€
์†Œ๋ฆฌ ์†Œ๋ฌธ ์—†์ด ์‚ฌ๋ผ์ง€๊ณ  

--soft HEAD~1 ์˜ต์…˜์œผ๋กœ ์ธํ•ด 
staging ์˜์—ญ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค 

 

 

 

 

์ดˆ๊ธฐ ์ƒํƒœ์—์„œ revert๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์ž

 

 

 

revert๋ฅผ ์ง„ํ–‰ํ•˜๋‹ˆ
revert๊ฐ€ ์ผ์–ด๋‚ฌ์Œ์„ ํ‘œ์‹œํ•˜๋Š” ์ปค๋ฐ‹์„
์ถ”๊ฐ€ํ•˜๋Š” ์ฐฝ์ด ๋–ด๋‹ค 

 

 

 

๊ธฐ์กด ์ž˜๋ชป๋œ ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ๋Š” ์œ ์ง€๋œ ์ฑ„ 

revert๊ฐ€ ์ผ์–ด๋‚ฌ์Œ์„ ํ‘œ์‹œํ•˜๋Š” ์ปค๋ฐ‹์ด ์ถ”๊ฐ€๋˜๊ณ  
์ž˜๋ชป๋œ ์ปค๋ฐ‹(1)์ด๋ผ๊ณ  readme์— ์ ์–ด๋’€๋˜ ๊ฒƒ๋„ ์‚ฌ๋ผ์กŒ๋‹ค

 

 

ํ•œ ๋งˆ๋””๋กœ

revert๋Š” ์ž˜๋ชป๋œ ์ปค๋ฐ‹ ์ด๋ ฅ์„ ์œ ์ง€ํ•œ ์ฑ„ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค

reset๋Š” ์ปค๋ฐ‹ ์ด๋ ฅ์ด ๋‹ฌ๋ผ์ง„๋‹ค(์ž˜๋ชป๋œ ์ปค๋ฐ‹์ด ์‚ฌ๋ผ์ง)

 

๋งŒ์•ฝ์— reset์„ ๊ณต์œ ํ•˜๋Š” ๋ธŒ๋žœ์น˜์— ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ปค๋ฐ‹ ์ด๋ ฅ์ด ๋‹ฌ๋ผ์ง€๊ณ 

๋…์„ ํ‘ผ๊ฒŒ (?) ๋œ๋‹ค 

 

์ฃผ์˜ํ•˜์ž 

 


 

Q. A๋ธŒ๋žœ์น˜(์•„์ง ๊ณต์œ  x)์— A-1๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋ฐ›์•„์˜ค๊ณ  ์‹ถ์–ด์š”
rebase vs merge ์ฐจ์ด 

 

 

test/main-branch์—์„œ ์ฒซ๋ฒˆ์งธ ์ปค๋ฐ‹ ์ž‘์„ฑ ํ›„ 

feature-branch๋กœ checkoutํ•ด์„œ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ตœ์ดˆ ์ปค๋ฐ‹์„ ์ž‘์„ฑ

๋‹ค์‹œ test/main-branch์—์„œ ๋ฆฌ๋ชจํŠธ ๋ธŒ๋žœ์น˜ ๋‘๋ฒˆ์จฐ ์ปค๋ฐ‹ ์ž‘์„ฑ

(์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ๋ง๊ฒƒ)

 

 

merge๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ๋‹ค

 

merge ์ปค๋ฐ‹์ด feature-branch์— ์ƒ๊ฒผ๋‹ค 

 

 

 

 

 

 

rebase๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ๋‹ค 

 

feature-branch ๋ณด๋ฉด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ฒซ๋ฒˆ์งธ ์ปค๋ฐ‹ ์™„๋ฃŒํ–ˆ๋Š”๋ฐ 

test/main-branch์—์„œ ๋ณ€๊ฒฝ ์ปค๋ฐ‹์ด ์ƒ๊ธด ์ƒํ™ฉ

 

 

 

 

 

 

main-branch์˜ ์ปค๋ฐ‹ ๋‚ด์šฉ์„ ์•ž์— ๋ถ™์ด๊ณ 

์ดํ›„์— ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹์ด ๋ถ™๋Š”๋‹ค 

์ด๋•Œ ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์˜ ์ปค๋ฐ‹ ํ•ด์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋œ๋‹ค

-> ์„ ํ˜•์œผ๋กœ ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 

์ปค๋ฐ‹ ๋‚ด์—ญ์— ๋ณ€๊ฒฝ์ด ์ƒ๊ธด๋‹ค 

์ฆ‰, ๊ณต์œ ํ•˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์ด๋Ÿฌ๋ฉด ์ผ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค 

 

 

 

๊ทธ์™ธ์˜ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋กœ์ปฌ์— ๋ฐ˜์˜ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

 

fetch : ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋กœ์ปฌ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค. ๋‹จ, ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

 

merge : ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•œ๋‹ค.

pull (fetch + merge) 

 

 


์ด๋ฒˆ ๋ฐฐํฌ์—๋Š” ๊ฐœ๋ฐœ๋œ A, B, C ๊ธฐ๋Šฅ ์ค‘ B ๊ธฐ๋Šฅ๋งŒ ๋“ค์–ด๊ฐˆ๊ฑฐ์—์š”  

 

 

B๊ธฐ๋Šฅ์„ cherry-pick ํ•ด๋ณด์ž 

 

test/cherry-pick-main-branch์— B๊ธฐ๋Šฅ์„ cherry-pickํ•˜์—ฌ ์ ์šฉํ•˜๋ ค ํ•œ๋‹ค

 

 

 

 

test/cherry-pick-main-branch ๋กœ ์˜ฎ๊ฒจ๊ฐ€์„œ 

์ปจํ”Œ๋ฆญํŠธ ํ•ด๊ฒฐ : B๊ธฐ๋Šฅ ๋งŒ ๋„ฃ์„ ๊ฑฐ๋‹ˆ๊นŒ A๊ธฐ๋Šฅ ์ž ์‹œ ์ œ์™ธ

git cherry-pick b9277df
git cherry-pick --continue

 

 

 

 

 

 

test/cherry-pick-main-branch์— B ๊ธฐ๋Šฅ๋งŒ์ด ๋ฐ˜์˜๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค 

 

 

 

 

 

 

 

๋


ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ 

https://github.com/Eundms/learn-git

 

GitHub - Eundms/learn-git: Git ์ง์ ‘ ํ•ด๋ณด๊ธฐ

Git ์ง์ ‘ ํ•ด๋ณด๊ธฐ . Contribute to Eundms/learn-git development by creating an account on GitHub.

github.com

 

์ƒ์กด์„ ์œ„ํ•œ Git ์‹œ๋ฆฌ์ฆˆ 

[git] ์ƒ์กด์„ ์œ„ํ•œ git : ํŒŒ์ผ์˜ ์ƒํƒœ, ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ

 

[git] ์ƒ์กด์„ ์œ„ํ•œ git : ํŒŒ์ผ์˜ ์ƒํƒœ , ์ปค๋ฐ‹ ํžˆ์Šคํ† ๋ฆฌ

Tracked (๊ด€๋ฆฌ๋Œ€์ƒ) = Unmodified (์ˆ˜์ •ํ•˜์ง€์•Š์Œ) + Modified (์ˆ˜์ •ํ•จ) + Staged (์ปค๋ฐ‹์œผ๋กœ ์ €์žฅ์†Œ์— ๊ธฐ๋กํ•  ์ƒํƒœ) Untracked (๊ด€๋ฆฌ๋Œ€์ƒ์ด ์•„๋‹˜) ์ฒ˜์Œ ์ €์žฅ์†Œ๋ฅผ Cloneํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์€ Tracked์ด๋ฉด์„œ Unmodfied ์ƒํƒœ์ด

eundms.tistory.com

 

[git] ์ƒ์กด์„ ์œ„ํ•œ Git : merge, rebase, cherry-pick, squash and merge

 

[git] ์ƒ์กด์„ ์œ„ํ•œ Git : merge, rebase, cherry-pick, squash and merge

์ด๋Ÿฐ ์ƒํ™ฉ๊ณผ๊ฑฐ์˜ ๋‚˜ : (๋ฌด์ง€์„ฑ) commit, merge ํ˜„์žฌ์˜ ๋‚˜ : (์•„! ์ƒ๊ฐ๋ณด๋‹ค ์ปค๋ฐ‹ ๊ธฐ๋ก์„ ํ™•์ธํ•  ์ผ์ด ์žˆ๋„ค.. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ž‘ ๊ธฐ๋ก์„ ์ž˜ ๋‚จ๊ฒจ๋†”์•ผ ํ•˜๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์€ ์ƒํƒœ)๊ทธ๋ž˜์„œ, merge, rebase, cherry-pick, squa

eundms.tistory.com

 

[git] ์ƒ์กด์„ ์œ„ํ•œ Git : ๋˜๋Œ๋ฆฌ๊ธฐ ์‹œ๋ฆฌ์ฆˆ --amend, reset, revert

 

[git] ์ƒ์กด์„ ์œ„ํ•œ Git : ๋˜๋Œ๋ฆฌ๊ธฐ ์‹œ๋ฆฌ์ฆˆ --amend, reset, revert

reset1. staging area์— ์˜ฌ๋ผ๊ฐ„ ํŒŒ์ผ์„ unstaging ํ•  ๋•Œ ์ด์šฉ (git add ์ทจ์†Œ)2. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ฐ„ ์ฝ”๋“œ๊ฐ€ ๊ณต์œ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ (ex - ํ˜ผ์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ธŒ๋žœ์น˜)   git reset [commit hash] : ํ•ด๋‹น commit์œผ๋กœ ๋ธŒ๋žœ์น˜์˜ ์ฐธ์กฐ๋ฅผ

eundms.tistory.com

 

[git] git branch ์ „๋žต : develop, release, hotfix

 

[git] git branch ์ „๋žต : develop, release, hotfix

1. Main ๋ธŒ๋žœ์น˜ ์ถœ์‹œ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ธŒ๋žœ์น˜ / ๋ฐฐํฌ๋œ ๊ฐ ๋ฒ„์ „์„ Tag๋ฅผ ์ด์šฉํ•ด ํ‘œ์‹œ 2. Develop ๋ธŒ๋žœ์น˜ ๋‹ค์Œ ๋ฒ„์ „ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋‘๋Š” ๋ธŒ๋žœ์น˜ / ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด, Main ๋ธŒ๋žœ์น˜

eundms.tistory.com

 

 

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ