Git | Branch, Checkout, Merge, Conflict

chaen·2023년 12월 13일

Tools

목록 보기
4/5
post-thumbnail

📌 Branch

master branch (main): 기준이 되는 큰 줄기
branch: 그 줄기에서 옆으로 뻗어나오는 나뭇가지, 분점

git에서는 main에서 버그를 수정하고 싶을 때, 특수한 기능을 개발할 때 등 전체 흐름에서 벗어나 추가 작업을 하게 되면 master branch에서 checkout하고 자신만의 branch를 만든다.
만약 branch에서 개발이 끝났다면, 개발자들은 자신의 feature branch를 master branch로 합치게 되고 이 과정을 merge라고 한다.

💻 Branch Checkout

git bash 활용하기

새로운 branch를 만들고 해당 branch로 head를 옮기는 명령어는 아래와 같다.

git checkout -b newBranchName # 새로운 브랜치의 이름

git branch newBranchName # 혹은 따로따로 작성할 경우
git checkout newBranchName # 이 두 줄로 작성한다

이 후 통상의 과정과 같이 add, commit, push를 하며 작업한다.

❗ Error

새로 만든 branch에서 push를 할 때 아래와 같은 에러가 나는 경우가 있다.
혹은 메인에서 그냥 push할 경우 발생할 가능성 o

fatal: The current branch newBranchName has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin newBranchName

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.

이 에러는 원격 저장소에 기본 branch 설정을 하지 않아 나타나는 현상으로, 아래와 같은 명령을 입력한 후 다시 push 한다.


SourceTree 활용하기

브랜치 버튼을 누르고 새 브랜치의 이름을 작성한 후 생성한다.
새 브랜치 체크아웃을 누를 경우 한 번에 처리할 수 있다.

작업을 지속하며, 아래와 같이 브랜치 탭을 새로 만든 브랜치로 옮긴 후 add, commit, push 한다. 모든 작업을 마치면 아래와 같이 new branch 와 origin/new branch가 보이며, 메인에서 또 다른 작업을 진행한 경우 가지가 나뉘어 서로 다른 길을 가는 것을 볼 수 있다.


💻 Branch Merge

git bash 활용하기

git checkout main # 메인브랜치로 체크아웃
git merge newBranchName # 브랜치 병합

SourceTree 활용하기

branch에서 오른쪽 마우스를 클릭하고, 현재 branch를 main에 병합한다.


💻 Branch Confilct

merge 혹은 pull request를 할 때 같은 라인을 main과 branch에서 함께 수정했다면 충돌이 일어날 수 있다.
이럴 경우 충돌된 코드를 확인하고, 수정해야 한다.

git bash 활용하기

git status #문제 확인

문제를 확인한 후 해당 파일을 직접 열어보면 <<<<<<< HEAD와 >>>>>> 를 통해 충돌된 부분을 확인할 수 있다. 개발자가 놔두고 싶은 코드를 제외하고 나머지를 삭제하거나 새롭게 작성한 후, 다시 git add와 commit을 하면 된다.


SourceTree 활용하기

merge를 하기 전 아래와 같은 팝업을 볼 수 있다.

충돌 파일을 확인하고, 수정된 파일 열기 버튼 / vscode로 확인하면 아래와 같이 표시가 되는 것을 볼 수 있다.
마찬가지로 두 코드가 겹치지 않게 수정한 후 저장하고 다시 add와 commit을 진행한다.

모두 완료가 되면 아래와 같은 모양으로 두 라인이 합쳐지게 된다.

0개의 댓글