본문 바로가기

⚙️ Computer Science/Git 사용법

[git 사용법] - Branch 브랜치 이동, 변경, 파일 복원, 삭제, 병합(merge),

Branch

협업을 하면 개발자들은 작업 레파지토리에서 소스 코드를 공유하면서 작업을 한다. 

 

만약 어플을 만드는데 어떤 개발자는 채팅 기능을 만들고, 또 어떤 개발자는 검색 기능을 맡아 작업한다고 가정해보자.

채팅 작업이 끝난 후 검색 작업을 수행한다면 연관성이 없는 기능 단위의 작업을 비효율적으로 하고 있는 것이다. 

 

각자 작업을 다 한 후에 합치는 방법이 더 효율적일 것이다. Git에서는 branchmerge라는 명령으로 이것을 가능하게 한다. 

 

Branch독립적으로 작업을 할 수 있는 공간이다.

main branch가 아니라, 채팅은 chat branch에 검색은 search branch 에서 작업을 하면 서로 독립적인 공간에서 작업을 하기 때문에 서로의 작업에 영향을 주지 않는다. 각자의 작업이 끝나면 main에서 이를 합치면 된다

 

 

개발자는 각자의 branch에서 작업한 내용을 main branch로 바로 커밋을 할 수도 있고 코드를 병합(merge)하고 업데이트 할 수도 있다. 

 

💡 만약 서로 같은 부분을 다르게 수정해서 합치면(merge) 충돌이 난다. 
충돌이 나면 둘 중 하나를 선택하라는 문구가 뜬다. 하지만 되돌릴 수도 있으니 너무 걱정하지 않아도 된다. 

 

 

 

✔️ 급하게 버그를 수정해야 하는 경우

현재의 작업 상태를 임시로 commit 해두고 이전 기능 작업 중인 상태로 branch를 변경할 수 있다. 

버그 패치용 branch를 만들고 수정 작업을 한다. 완료 후 main에 합칠 수 있다. 

 

 

 

 

✔️ 현재 branch 목록과 현재 branch 확인

 

$ git branch

 

나는 최근에 login 기능을 구현해서 login branch를 만들었기 때문에 위의 사진처럼 나온다. 

 

 

 

 

✔️ branch 삭제 

 

$ git branch -d <branchName>

 

만약 이미 <branchName>에 있습니다. 라고 뜬다면

 

$ git checkout <옮길 브랜치명>
$ git branch -d <branchName>

 

checkout 을 하고 하면 될 것이다.

 

 

checkout 은 브랜치 변경 또는 작업 트리 파일 복원을 할 수 있다. Git2.23에서는 checkout을 대신해 switch restore 가 도입되었다. 

 

 

 

 

✔️ switch

switch 는 브랜치를 변경한다. 새로 만들어서 변경할 수도 있다. 

 

$ git switch <branchName>	//브랜치 변경
$ git switch -c <branchName>	//브랜치 새로 만든 후 변경

 

 

 

 

✔️ restore

restore 은 파일의 수정 내용 복원과 add를 통해 스테이지에 올린 파일을 빼낼 때 사용한다. 

 

$ git restore README.md		//README.md 파일을 변경 전 상태로 되돌리기

 

 

 

 

✔️ branch 복구

삭제한 브랜치를 복구하는 것은 2단계로 나눠서 진행할 수 있다. 

 

[1단계] git reflog 로 복구 시점 확인

 

$ git reflog

 

reflog 는 모든 참조 내역들을 뜻한다. main branch에서 어떤 브랜치로 참조했는지, 어떤 커밋을 했는지 등 모든 내역을 확인할 수 있다. 

 

 

[2단계] git checkout 으로 복구

 

$ git checkout -b <branchName> <커밋 해시값>

 

 

 

 

 

✔️ merge(병합)하기

두 개의 브랜치로 나누어 작업했던 것을 병합하는 명령이다. 

 

$ git checkout main 	//main으로 이동
$ git log
$ git merge chat
$ git log

 

merge 가 완료되었으면 push 까지 해주어야 원격 저장소에 반영이 된다. 

 

$ git push origin main

 

채팅 다음에는 검색을 병합하면 된다.

 

$ git merge search
$ git push origin main

 

 

 

728x90