๐ 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] ์ปค๋ฐ ์ ํ์ผ์ ๋๋ฝํ์์ ๋ (+์ปค๋ฐ๋ฉ์์ง ์์ ๋ฒ) (2) | 2025.01.23 |
---|---|
[git] .gitignore๊ฐ ์ ์ฉ์ด ์๋ ๋ ํด๊ฒฐ๋ฒ (0) | 2023.08.22 |