branch
์๋ก์ด ๋ธ๋์น ์์ฑ
git branch (๋ธ๋์น ์ด๋ฆ)๋ธ๋์น ๋ชฉ๋ก ํ์ธ
git branch๋ธ๋์น ์ด๋
git switch (๋ธ๋์น ์ด๋ฆ)๋ธ๋์น ์์ฑ๊ณผ ๋์์ ์ด๋
git switch -c (๋ธ๋์น ์ด๋ฆ)๋ธ๋์น ์ญ์
git branch -d (๋ธ๋์น ์ด๋ฆ)๋ง์ฝ ์์ง ๋ค๋ฅธ ๋ธ๋์น๋ก ๊ฐ์ ธ์ค์ง ์์ ๋ด์ฉ์ ์ปค๋ฐ์ด ์๋ ๋ธ๋์น๋ฅผ ์ง์ธ ๋๋ -d๋์ -D๋ก ๊ฐ์ ์ญ์ ํ ์ ์๋ค.
๋ธ๋์น ์ด๋ฆ ๋ฐ๊พธ๊ธฐ
git branch -m (๊ธฐ์กด ๋ธ๋์น๋ช
) (์ ๋ธ๋์น๋ช
)์ฌ๋ฌ ๋ธ๋์น์ ๋ด์ญ ํ์ธ(
git log๋ ์์นํ ๋ธ๋์น์์์ ๋ด์ญ๋ง ๋ณผ ์ ์๋ค.)
git log --all --decorate --oneline --graph์ด๋ ๊ฒ ํ๋ฉด ํฐ๋ฏธ๋์์ ๋ณด๊ธฐ ์ข๊ฒ ํํํด ์ฃผ๊ธฐ๋ ํ์ง๋ง ์์คํธ๋ฆฌ๊ฐ์ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณด๋๊ฒ ํจ์ฌ ์ข๋ค.
๋ธ๋์น ํฉ์น๊ธฐ
merge
๋ ๋ธ๋์น๋ฅผ ํ ์ปค๋ฐ์ ์ด์ด๋ถ์ธ๋ค.(
mergeํ ์๋ก์ด ์ปค๋ฐ ์์ฑ)main๋ธ๋์น์์ ๋ค๋ฅธ ๋ธ๋์น๋ฅผ ํฉ์น ๋(main๋ธ๋์น์์ ์คํ)
git merge (๋ธ๋์น ์ด๋ฆ)mergeํ ๊ฒ๋ ํ๋์ ์ปค๋ฐ์ด๊ธฐ ๋๋ฌธ์ reset์ด๋ revert๋ก ๋๋๋ฆด ์ ์๋ค.(์๋ฅผ ๋ค๋ฉด mergeํ๊ธฐ ์ ํด๋น ๋ธ๋์น์ ๋ง์ง๋ง ์์ ์ผ๋ก ๊ฐ ์ ์๋ค.)
rebase
๋ธ๋์น์ ์ปค๋ฐ๋ค์ ๋ค๋ฅธ ๋ธ๋์น์ ์ด์ด ๋ถ์ธ๋ค.
merge์๋ ๋ฐ๋๋ก ๋์์ด ๋ ๋ธ๋์น์์ ์คํํ๋ค.(์๋ธ ๋ธ๋์น์์ ์คํ)
git rebase main๊ทธ๋ฆฌ๊ณ rebase๋ฅผ ํ๋ฉด main๋ธ๋์น๊ฐ ๋ค์ณ์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ merge๋ฅผ ํตํด rebaseํ ๋ธ๋์น์ ์์ ์ผ๋ก ์ฎ๊ฒจ์ฃผ์ด์ผ ํ๋ค.
merge์ rebase์ฐจ์ด
merge: ๋ธ๋์น ์ฌ์ฉ๋ด์ญ์ ๋จ๊ธด๋ค.(ํ์คํ ๋ฆฌ๊ฐ ๋จ๋๋ค.)rebase: ๋ธ๋์น๋ฅผ ๊ทธ๋๋ก ์ด์ด๋ถ์ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ์คํ ๋ฆฌ๊ฐ ๋จ์ง ์๊ณ ํ ์ค๋ก ์ ์งํ ์ ์๋ค.ํ์ ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์.
๋ง์ฝ ๋ธ๋์น๋ฅผ ํฉ์น ๋ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์ถฉ๋์ ํด๊ฒฐํ๊ณ git add ., git commit์ผ๋ก ๋ง๋ฌด๋ฆฌ ํ๋ฉด ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋น์ฅ ์ถฉ๋ ํด๊ฒฐ์ด ์ด๋ ค์ธ ๊ฑฐ ๊ฐ์ผ๋ฉด ๋ค์ ๋ช
๋ น์ด๋ก ์ค๋จํ ์ ์๋ค.
git merge --abort
๋๋
git rebase --abort๋ํ merge๋ ํ๋์ ์ปค๋ฐ์ผ๋ก ์ถฉ๋ ํด๊ฒฐ์ ํ ์ ์์ง๋ง, rebase๋ ์ปค๋ฐ๋ง๋ค ์ถฉ๋ ํด๊ฒฐ์ ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ git rebase --continue๋ก ์ถฉ๋์ด ๋ชจ๋ ํด๊ฒฐ๋ ๋๊น์ง ๋ฐ๋ณตํ ์ ์๋ค.
Git์ merge ์ ๋ต

main๋ธ๋์น์์dev1์ด ๋ถ๊ธฐํด ๋๊ฐ๋ ์ง์ , ์ฆ ๋ ๋ธ๋์น๊ฐ ๊ณตํต์ผ๋ก ๊ฐ์ง๊ณ ์๋ ์ปค๋ฐ์base๋ผ๊ณ ํ๋ค.main๊ณผdev1์ด ๊ฐ๊ฐ ์ฐธ์กฐํ๋ ์ปค๋ฐ์ ๋์ผ ์ ์์ ์์นํ๊ณ ์๋ค. ์ด ๋ ๋ ๋ธ๋์น๋Fast-forward์ํ์ ์๋ค๊ณ ํ๋ค.Fast-forward๊ด๊ณ์ ์๋ ๋ธ๋์น๋ฅผ ๊ด๊ณ์์git merge๋ฅผ ํ๋ฉด ์๋ก์ด ์ปค๋ฐ์ด ์๊ธฐ์ง ์๊ณ , ๋ค์ ์ณ์ง ๋ธ๋์น(main)์ ์ฐธ์กฐ ๊ฐ์ฒด๊ฐ ์์ ์๋ ๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋๋ก ์ด๋์ ํ๋ค.๋ง์น ๋ธ๋์น๊ฐ ์ ํ ํ๋ฏ ์๋ ๋ธ๋์น ์ฐธ์กฐ ๊ฐ์ผ๋ก ์ด๋ํ๋ค๊ณ ํด์
Fast-forward(๋นจ๋ฆฌ ๊ฐ๊ธฐ)๋ผ๊ณ ๋ถ๋ฆฐ๋ค.


๋ ๋ธ๋์น ๋ชจ๋
base์์ ์ปค๋ฐ์ ์งํํด์ ๋ถ๊ธฐํ ๋๊ฐ ์ํ๋ค. ๋ ๋ธ๋์น ์ค ์ด๋ ๊ฒ๋base์ ์์นํ์ง ์๋๋ค.์ด๋ ๊ฒ ๋ ๋ธ๋์น๊ฐ
base์์ ๋ถ๋ฆฌ๋ ์ปค๋ฐ์ ์ฐธ์กฐํ ๋git merge๋ฅผ ํ๋ฉด ์๋ก์ด ์ปค๋ฐ์ด ์์ฑ๋๋ค. ์ด๊ฒ์3-way merge๋ผ๊ณ ํ๋ค.3-way์ธ ์ด์ ๋base์ ๊ฐ ๋ธ๋์น 2๊ฐ๊ฐ ์ฐธ์กฐํ๋ ์ปค๋ฐ์ ๊ธฐ์ค์ผ๋ก ๋ณํฉ์ ์งํํ๊ธฐ ๋๋ฌธ์ด๋ค.

git merge ์ต์
๋ค
git merge -ff (๋ธ๋์น๋ช
)-ff(fast-forward) ์ต์ ์ ํ ๋ธ๋์น์merge๋์ ๋ธ๋์น๊ฐfast-forward๊ด๊ณ์ ์๋ ๊ฒฝ์ฐ ์๋ก์ด ์ปค๋ฐ์ ์์ฑํ์ง ์๊ณ ๋ธ๋์น์ ์ฐธ์กฐ ๊ฐ๋ง ๋ณ๊ฒฝ๋๋๋ก ํ๋ค.fast-forward๊ด๊ณ๊ฐ ์๋๋ฉดmerge์ปค๋ฐ์ ์์ฑํ๋ค.
git merge --no-ff (๋ธ๋์น๋ช
)--no-ff(non fast-forward) ์ต์ ์merge๋์๊ณผfast-forward๊ด๊ณ์ฌ๋ ๊ฐ์ ๋กmerge์ปค๋ฐ์ ์์ฑํ๊ณ ๋ณํฉํ๋ค.์ด ๋ช ๋ น์ ์๋กญ๊ฒ ์๊ธฐ๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํ๋ ํธ์ง๊ธฐ๊ฐ ์๋ํ๋ค.
์ด ์ต์
merging์ผ๋กmain๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ์ ๋ ์ป์ ์ ์๋ ๋ ๊ฐ์ง ํจ๊ณผ๋ธ๋์น ๊ด๊ณ์ ์๊ด์์ด ํ์ํ ์ปค๋ฐ๋ง ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ด๋ค ๋ธ๋์น์์
merge๋ฅผ ํ๋์ง ๊ธฐ๋ก์ ๋จ๊ธธ ์ ์๋ค.
git merge --squash--no-ff์ต์ ์ผ๋กmerging์ ํ๋ฉด ์๋ ๋ธ๋์น์ ์ปค๋ฐ ์ด๋ ฅ์ ๋จ๊ธฐ์ง ์๋๋ค. ๋ช ๋ น์ด๋์์คํธ๋ฆฌ๋ก ์ด๋ค ๋ธ๋์น๋ก๋ถํฐmerging๋์๋์ง๋ ํ์ธํ ์ ์๋ค.--squash์ต์ ์ ๋ป(์ง๋๋ฅด๋ค)์ฒ๋ผ ๋ค์ ๊ฐ์์ ์ธ ๋ณํฉ ๋ฐฉ๋ฒ์ด๋ค. ์ปค๋ฐ ์ด๋ ฅ๊ณผmerge๋ ๋ธ๋์น ์ด๋ ฅ๋ ๋จ๊ธฐ์ง ์๋๋ค.์๋ก์ด ์ปค๋ฐ์ ์๋ ๋ธ๋์น์ ๋ด์ฉ์ ๋ชจ๋ ๋ญ์ณ ๋๋ ๊ทธ๋ฆผ์ด ๋๋ค.

--squash์ต์ ์ ๋ธ๋์น๊ฐ ์ญ์ ๋๋ ๊ฒ์ ์๋๋ค.์๋ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ด
merged commit์ ์ฐธ์กฐํ์ง ์์์merging์ ๋ณด๊ฐ ํ์๋์ง ์๊ณ ,main๋ธ๋์น ๊ด์ ์์๋ ๋ณํฉ์ ๋ํ ์ด๋ ฅ์ด ๋จ์ง ์๋๋ค.

๋ค๋ฅธ ๋ธ๋์น์์ ์ํ๋ ์ปค๋ฐ ๊ฐ์ ธ์ค๊ธฐ
git cherry-pick (์ปค๋ฐ ํด์)ํด๋น ์ปค๋ฐ์ ๋ด์ฉ์ ํ์ฌ ๋ธ๋์น์ ์ถ๊ฐํ๋ค. ๋ค์ ์ปค๋ฐ ํด์๋ฅผ ์ฐ์ ์ ๋ ฅํด์ ๋ณต์ ์ถ๊ฐํ ์ ์๋ค.
์ปค๋ฐ ํด์๋ฅผ ๋ณต์๋ก ์ ๋ ฅํ ๋ ์ฌ์ด์
..์ ์ ๋ ฅํ๋ฉด ํด๋น ๊ตฌ๊ฐ์ ์ปค๋ฐ์ ํ๋ฒ์ ์ถ๊ฐํ๋ค.์) ์ปค๋ฐ1..์ปค๋ฐ3 : ์ปค๋ฐ1์์ ์ปค๋ฐ3๊น์ง์ ๋ด์ฉ์ ๋ชจ๋ ์ ์ฉํ๋ค.
git cherry-pick --abort: ์ถฉ๋๊ฐ์ ์ํฉ์ผ๋กcherry-pick์ทจ์git cherry-pick --continue: ์ถฉ๋๊ฐ์ ์ํฉ ํด๊ฒฐ ํcherry-pick์งํ
๋ค๋ฅธ ๋ธ๋์น์์ ํ์๋ ๋ธ๋์น ์ฎ๊ฒจ๋ถ์ด๊ธฐ
git rebase --onto (๋์ฐฉ ๋ธ๋์น) (์ถ๋ฐ ๋ธ๋์น) (์ด๋ํ ๋ธ๋์น)๋์ฐฉ ๋ธ๋์น์๋ค๊ฐ์ถ๋ฐ ๋ธ๋์น์์ ํ์๋์ด๋ํ ๋ธ๋์น๋ฅผ ์ด์ด ๋ถ์ด๊ฒ ๋ค.์ดํ
์ด๋ํ ๋ธ๋์น์ ํค๋๋กfast-forwardํด์ฃผ๋ฉด ๋๋ค.(merge๋ฑ)
๋ค๋ฅธ ๋ธ๋์น์ ์ปค๋ฐ๋ค์ ํ๋๋ก ๋ฌถ์ด ๊ฐ์ ธ์ค๊ธฐ
git merge --squash (๋์ ๋ธ๋์น)๋์ ๋ธ๋์น์ ์ปค๋ฐ๋ค์ ํ๋ฒ์ ๊ฐ์ ธ์จ๋ค.
๋ณ๊ฒฝ์ฌํญ๋ค์ด ์คํ ์ด์ง ๋์ด ์๋ค.
Gitflow
ํ์ ์ ์ํ ๋ธ๋์นญ ์ ๋ต
์์ฃผ ์ฌ์ฉ๋๋ ๋ธ๋์น๋ค
main
์ ํ ์ถ์/๋ฐฐํฌ
develop
๋ค์ ์ถ์/๋ฐฐํฌ๋ฅผ ์ํ ๊ฐ๋ฐ ์งํ
release
์ถ์/๋ฐฐํฌ ์ ํ ์คํธ ์งํ(QA)
feature
๊ธฐ๋ฅ ๊ฐ๋ฐ
hotfix
๊ธด๊ธํ ๋ฒ๊ทธ ์์
Last updated
