๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Git/git

[git] branch์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉํ•˜๊ธฐ

by dani0312 2023. 10. 27.

๐Ÿ“Œ branch ๊ฐœ๋…

โ—พ ๋ธŒ๋žœ์น˜๋ž€?

๋ชจ๋“  ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์›ํ•œ๋‹ค. ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ž์ฃผ ์ƒ๊ธด๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•˜๊ณ  ๋‚˜์„œ ์›๋ž˜ ์ฝ”๋“œ์™€๋Š” ์ƒ๊ด€์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋ธŒ๋žœ์น˜๋‹ค. 

 

์—ฌ๋Ÿฌ ๋ช…์ด ํ•จ๊ป˜ ๋™์ผํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋‹ค๋ฃฐ ๋•Œ ์ด ์†Œ์Šค์ฝ”๋“œ ์œ„ ์–ด๋–ค ๊ฐœ๋ฐœ์ž๋Š” ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ธฐ๋„ ํ•œ๋‹ค.์ด์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ๋•Œ์—๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด ์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

 

์ด๋Ÿด ๊ฒฝ์šฐ, ์•ž์„œ ์ด์•ผ๊ธฐํ•œ ๊ฒƒ๊ณผ๊ฐ™์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋™์‹œ์— ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐ”๋กœ '๋ธŒ๋žœ์น˜'๋‹ค

๊ฐ์ž ๋…๋ฆฝ์ ์ธ ์ž‘์—… ์˜์—ญ ์•ˆ์—์„œ ๋งˆ์Œ๋Œ€๋กœ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ถ„๋ฆฌ๋œ ์ž‘์—… ์˜์—ญ์—์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ๋‚˜์ค‘์— ์›๋ž˜์˜ ๋ฒ„์ „๊ณผ ๋น„๊ตํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ๋ฒ„์ „์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด master ๋ธŒ๋žœ์น˜์—์„œ ๋กœ๊ทธ์ธ ๋ธŒ๋žœ์น˜๊ณผ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ๋”ฐ๋กœ ์ง„ํ–‰ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์ด๋ฅผ master์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

๐Ÿ“Œ branch๋ช…๋ น์–ด

โ—พ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ์ด๋™

๊ธฐ์กด์— ๋ธŒ๋žœ์น˜ ์ด๋™ ๋ช…๋ น์–ด๋กœ 'checkout'์ด ์‚ฌ์šฉ๋˜์—ˆ์œผ๋‚˜ git 2.23๋ถ€ํ„ฐ๋Š” switch, restore๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค.  

git checkout {๋ธŒ๋žœ์น˜๋ช…}

checkout์ด ๋ถ„๋ฆฌ๋œ ์ด์œ ๋Š” checkout์ด ๊ฐ€์ง€๋Š” ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ git --help์—๋„ checkout๋ช…๋ น์–ด๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ธŒ๋žœ์น˜ ์ด๋™์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋กœ๋Š” ์ด์ œ๋Š” switch๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

์‹ค์ œ git๊ด€๋ จ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉด ๋งŽ์€ ๊ณณ์—์„œ ์—ฌ์ „ํžˆ checkout ๋ช…๋ น์–ด๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ํ›จ์”ฌ ์ต์ˆ™ํ•˜๊ฒŒ ์—ฌ๊ธฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์€ ๋“ฏ ํ•˜๋‹ค. ํ˜„์žฌ๋Š” checkout์œผ๋กœ๋„ ์—ฌ์ „ํžˆ ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ถŒ์žฅํ•˜๋Š” swtich๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

๋ธŒ๋žœ์น˜ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ธฐ

git branch {๋ธŒ๋žœ์น˜๋ช…}
ex) git branch testBranch

git branch testBranch ์™€ ๊ฐ™์ด ์ž…๋ ฅ ์‹œ, testBranch์ด๋ฆ„์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 

 

 

 

 

๋ธŒ๋žœ์น˜ ์ด๋™ํ•˜๊ธฐ

git switch {๋ธŒ๋žœ์น˜๋ช…}
ex) git switch testBranch

ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋กœ ์ด๋™์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 'switch' ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์ผ master๋ธŒ๋žœ์น˜์—์„œ testBranch๋กœ ์ด๋™ํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ˜„์žฌ ์œ„์น˜: master   ->  ์ด๋™ํ•˜๊ณ  ์‹ถ์€ ๋ธŒ๋žœ์น˜: testBranch

master๋ธŒ๋žœ์น˜์—์„œ git switch testBranch์„ ํ†ตํ•ด testBranch๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ํ•ด๋‹น ๋ธŒ๋žœ์น˜๋กœ ์ด๋™ํ•˜๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•จ์œผ๋กœ์จ ์ด์ „์˜ ๋ช…๋ น์–ด ๋ธŒ๋žœ์น˜ ์ƒ์„ฑํ•˜๊ธฐ, ๋ธŒ๋žœ์น˜ ์ด๋™ํ•˜๊ธฐ๋ฅผ  ํ•œ ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๋‹ค.

git switch -c {๋ธŒ๋žœ์น˜๋ช…}
ex) git switch -c testBranch

์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ master๋ธŒ๋žœ์น˜์— ์žˆ์œผ๋ฉฐ ๋ณ„๋„์˜ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ์ด๋™ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ testBranch๋ฅผ ๋งŒ๋“ค์–ด ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โ—พ ๋ธŒ๋žœ์น˜ ํ™•์ธํ•˜๊ธฐ

ํ˜„์žฌ ๋‚ด๊ฐ€ ์œ„์น˜ํ•œ ๋ธŒ๋žœ์น˜ ํ™•์ธํ•˜๊ธฐ

git branch

ํ˜„์žฌ master ๋ธŒ๋žœ์น˜์— ์žˆ๋‹ค๋ฉด ๊ฒฐ๊ณผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ณ„๋„๋กœ branch๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•˜๋‹ค๋ฉด master ๋ธŒ๋žœ์น˜๋งŒ ์กด์žฌํ•˜๊ณ  ํ˜„์žฌ ์†ํ•œ ๊ณณ์ด master๋ธŒ๋žœ์น˜์ด๋‹ค.

 

ex)

$ git branch

 master

 

 

 

์›๊ฒฉ ์ €์žฅ์†Œ์˜ ๋ธŒ๋žœ์น˜ ํ™•์ธํ•˜๊ธฐ

git branch -r

ex)

$ git branch -r

 origin/master

 

 

 

๋ธŒ๋žœ์น˜๋ณ„ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ™•์ธ

๋ธŒ๋žœ์น˜ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ๋ธŒ๋žœ์น˜๋ณ„๋กœ ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

git branch -v

ex)

$git branch -v

master aabb091 - feat: ์ฃผ๋ฌธ์„œ๋น„์Šค ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

login aabb091 - feat: ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ

test aabb091 - docs: ํ…Œ์ŠคํŠธ ๋ชฉ๋ก ์ •๋ฆฌ

 

master, login, test์˜ 3๊ฐœ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๊ณ  ๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋‹ค. 

 

 

โ—พ ๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ

์•ˆ์ „ ์‚ญ์ œํ•˜๊ธฐ

git branch -d {๋ธŒ๋žœ์น˜๋ช…}
ex) git branch -d testBranch

๋ธŒ๋žœ์น˜๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋ฉฐ, ํ•ด๋‹น ๋ธŒ๋žœ์น˜๊ฐ€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ๋จธ์ง€๋˜์—ˆ์„ ๋•Œ๋งŒ ์ž‘๋™ํ•œ๋‹ค. ๋จธ์ง€๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๊ฒฝ์šฐ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

๊ฐ•์ œ ์‚ญ์ œํ•˜๊ธฐ

git branch -D {๋ธŒ๋žœ์น˜๋ช…}
ex) git branch -D testBranch

๋ธŒ๋žœ์น˜๋ฅผ ๊ฐ•์ œ๋กœ ์‚ญ์ œํ•œ๋‹ค. ๋ธŒ๋žœ์น˜๊ฐ€ ๋จธ์ง€๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์ฃผ์˜ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฏธ๋ฆฌ ๋ฐฑ์—…์„ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์›๊ฒฉ ๋ธŒ๋žœ์น˜ ์‚ญ์ œํ•˜๊ธฐ

์œ„์˜ git branch -d {๋ธŒ๋žœ์น˜๋ช…} ์ด๋‚˜ git branch -D {๋ธŒ๋žœ์น˜๋ช…} ๋ช…๋ น์–ด ๊ฐ™์€ ๊ฒฝ์šฐ ๋กœ์ปฌ์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด๋‹ค. ์ฆ‰ ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋„ ์›๊ฒฉ์˜ ๋ธŒ๋žœ์น˜๊ฐ€ ํ•จ๊ป˜ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. ์›๊ฒฉ์—์„œ๋„ ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์•ผํ•œ๋‹ค.

git push origin --delete {๋ธŒ๋žœ์น˜๋ช…}
ex) git push origin --delete {๋ธŒ๋žœ์น˜๋ช…}

 

 

๋งŒ์ผ ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰์‹œ ์•„๋ž˜์™€ ๊ฐ™์ด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ด๋ฏธ ๊ทธ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ๋‹ค.

error: unable to push to unqualified destination: remoteBranchName The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to ‘git@repository_name'

 

 

์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ธŒ๋žœ์น˜ ๋ชฉ๋ก ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

git fetch -p // ์›๊ฒฉ ์ €์žฅ์†Œ์™€ ๋กœ์ปฌ ์ €์žฅ์†Œ ๊ฐ„์— ๋™๊ธฐํ™”๊ฐ€ ์ผ์–ด๋‚จ

์ด ๋ช…๋ น์–ด๋Š” ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ ๋ณ€๊ฒฝ๋œ ์ •๋ณด๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— ๋กœ์ปฌ์—์„œ ์ด๋ฏธ ์‚ญ์ œ๋œ ์›๊ฒฉ ๋ธŒ๋žœ์น˜๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. -p ์˜ต์…˜์€ prune์˜ ์ค„์ž„๋ง๋กœ, ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ํ•œ๋‹ค๋Š”  ๋œป์ด๋‹ค. ํŒจ์น˜(fetch)๋ฅผ ํ•˜๋ฉด ์›๊ฒฉ์—์„œ ์ด๋ฏธ ์‚ญ์ œ๋œ ๋ธŒ๋žœ์น˜๋Š” ๋กœ์ปฌ ๋ชฉ๋ก์—์„œ ์—†์–ด์ง„๋‹ค.

 

 

์ด ๋ช…๋ น์–ด๋Š” ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ, ํŠนํžˆ ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€์˜ ์ž‘์—…์„ ๋™๊ธฐํ™”ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

 

 

 

 

 

 

 

 

์ฐธ๊ณ ์ž๋ฃŒ

https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
https://blog.naver.com/seek316/222344170901
https://blog.outsider.ne.kr/1505

https://goddaehee.tistory.com/274

https://www.freecodecamp.org/korean/news/how-to-delete-a-git-branch-both-locally-and-remotely/

'Git > git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[git] .gitignore๊ฐ€ ์ ์šฉ์ด ์•ˆ๋  ๋•Œ ํ•ด๊ฒฐ๋ฒ•  (0) 2023.08.22

/* ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์ฝ”๋“œ */ /* ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์ฝ”๋“œ ๋๋ */