Etc/git

[Git]branch(차원 합치기/충돌 해결)

och 2023. 9. 15. 16:46

4-1 차원 넘나들기

branch를 생성하여 진행. 

신기능1, 신기능2, 긴급수정, 코드개선 등등 브렌치를 나누어 작업하고 작업이 끝나면 우선 main에 합쳐서 서비스를 제공.

이 모든 것이 하나의 폴더에서 가능하다ㅏㅏㅏㅏ!!! 

 

git branch 생성할branchName

git switch 이동할branchName

git branch # branch 목록 확인

git switch -c branchName # branchName생성하며 이동

git branch -d branchName (-D 옵션은 수정할 내용이 있어도 강제삭제)

 

각 가지의 log는 자신의 것만 나온다.

다른 가지의 commit 도 보고 싶다면 

 

git log --all --decorate --oneline --graph

을 하면 되지만 소스트리를 쓰는 것이 훨씬 편하다. 

 

그럼 이제 branch를 합쳐보자!! 

 

4-2 차원을 합치는 두 가지

merge와 rebase의 동작은 동일하다. 다만 협업할 때, 그리고 히스토리 관리에 따라 사용하는 것이 다르다. 

 

merge : branch의 히스토리를 남겨야할 때. 주로 협업할 때 사용. 

rebase : branch를 메인 뒤에 이어 붙인다. 협업할 때는 내가 main에 이어 붙이기 때문에 다른 사람이 작업할 때 문제가 생길 수 있다. 

branch가 엄청 많을 경우 관리하기가 쉽지 않기에 history를 깔끔하게 관리하기 위해 rebase를 사용한다. 

 

4-3 차원 합치기

-Merge

합칠 branch로 이동 후 (즉, main branch로 이동 후)

git merge 합칠branchName

 

새로운 commit 생성이 되기 때문에 되돌리기가 가능! 

reset을 하면 merge전으로 되돌아간다. 

 

사용이 끝난 branch는 삭제한다 

git branch -d add-coach

 

-Rebase

rebase할 대상 branch로 이동. (즉, main이 아닌 줄기 branch로 이동)

git rebase main

 

main 이후에 branch가 이어 붙음. 다만 우리가 있는 줄기의 위치는 합쳐지기 전이다.

이를 merge로 합쳐서 줄기의 끝으로 이동해야함. 

git switch main

git merge new-teams

이후 branch 삭제해주면 된다. 

 

추가적인 작업, 실험적인 작업, 급한 작업을 branch에서 작업 후 이렇게 합칠 수 있다.

근데 충돌이 생기면 어떡하지?? 

 

4-4 차원의 충돌

-Merge충돌

git merge conflict-1 시 충돌

검색에서 <<<< 를 탐색 

 

충돌이 간단하면 다행이데 만약 복잡하여 merge를 중단해야 한다면 

git merge --abort

 

만약 충돌을 해결했다면 

git add .

git commit

을 해주면 된다. 

git branch -d conflict-1

 

-Rebase충돌

merge의 충돌은 한번에 모든 충돌을 해결한다. rebase는 branch의 commit 마다 충돌이 있다면 그걸 순서대로 해결한다.

마찬가지로 충돌을 당장 해결하지 못할 것 같으면 

git rebase --abort로 합치기 이전으로 돌아가면 된다. 

 

충돌을 해결했다면 차례대로 해결하고 

git add .

git rebase --continue를 해야한다.

 

이후엔 마찬가지로 branch를 지워주면 된다.