[Git, Github] branch

JUNHO YEOM·2022년 11월 30일
0

Git, Github

목록 보기
20/27
post-thumbnail

branch

깃이 merge를 하는 2가지 전략

git에서 merge하는 2가지 방법인 fast forward, 3-way merge에 대해서 알아보겠습니다.


fast forward

두 브랜치가 공통 commit을 조상으로 가지고 있는데 한쪽 branch만 이후의 commit이 있을 때, 병합을 위한 새로운 commit을 만들지 않고, 기존의 branch에 브랜치의 헤드를 옮기는 것을 말합니다.
fast forward을 진행하게 되면 병합된 브랜치는 삭제합니다.
병합하고 나서 어떤 브랜치를 사용했고, 언제 병합했는지 기록의 변화가 남지 않게 됩니다.

원 브랜치의 변화가 없어도 fast forward를 하지 않고 병합 하기

git emrge --no-ff "병합할 브랜치명"

해당 옵션을 사용하여 브랜치를 서로 분리한 상태로 유지하며 merge할 수 있습니다.


3way merge

두 브랜치를 병합할 때, 두 커밋 모두에 속한 파일들이 모두 내용이 다르다면,
충돌이 발생할 수 있습니다.
두 커밋이 어떤 브랜치에서 변경된 것인지, 알기 위해
두 커밋이 공통으로 갖는 commit과, 서로 병합하는 두 branch의 commit을 비교하기 때문에 3-way merge라고 합니다.


특정 branch의 특정 commit만 가져오기

git cherry-pick "가져올 commit의 해시"

다른 브랜치에서 원하는 commit만 가져오는 방법입니다.
원하는 브랜치만 복사해서 위로 붙여넣는 방식으로 실행 됩니다.


특정 branch안에 있는 특정 branch 가져오기

git rebase --onto "도착 브랜치" "출발브랜치" "이동할 브랜치"

어떤 기능을 main에 적용하기위해 만들어 놓은 second 브랜치가 있고,
second 브랜치에서 다른 유용한 기능을 만들기 위한 third 브랜치를 만들었다고 가정하겠습니다.
main브랜치에 third 브랜치만을 main 브랜치에 옮겨놓고 싶을 때 해당 명령어를 사용합니다.

브랜치 main브랜치로 전환 해주기

git switch main

아직 main branch와 병합 되지는 않았습니다.

merge 해서 main branch와 합쳐주기

git merge "붙여 놓은 branch"

붙여놓은 branch와 main브랜치를 합쳐주는 명령으로 병합해줍니다.


다른 브랜치의 commit들 한번에 가져와서 새로운 commit 만들기

브랜치의 commit들 한번에 가져와 주기

git merge --squash "브랜치 이름"

다른 branch의 여러 commit들을 한번에 가져옵니다.

commit하여 변경사항 저장해주기

git commit -m "새로 만들 커밋 message"

변경사항이 commit 되지는 않았음으로 commit하여 변경사항을 repository에 저장하여 줍니다.

가져오려는 branch의 commit들이 새로운 commit으로 가져와서 합쳐졌습니다.

0개의 댓글