TIL #8 Git 협업하기

HYEON JIN CHOI·2024년 4월 30일

1. 브랜치

1.1. 브랜치의 기본 개념

Git 을 사용하다보면 현재 개발 중인 프로젝트에서 추가 기능을 구현하고 싶을 때가 있다.
해당 기능을 바로 구현해보려고 시도할 수도 있지만, 현재 작업 중인 프로젝트에 영향을 끼치지 않고
따로 개발을 진행해야 하기에 다른 방법이 필요하다.
이 때 사용할 수 있는 방법이 브랜치 이다.

브랜치(Branch) 는 분기된 가지를 의미하며 일종의 복사본이라고 볼 수 있다.
기본적으로 main 이라는 브랜치 에서 개발을 진행하게 되는데,
개별적인 기능을 구현하고 싶다면 새로운 브랜치 를 생성하여 독립적으로 개발을 진행할 수 있다.

1.2. 브랜치 활용

  • 브랜치 생성

    새로운 브랜치를 생성하는 명령어는 다음과 같다.
    $ git branch 브랜치이름
  • 브랜치 이동

    기본적으로 브랜치는 main 브랜치로 설정되어 있다.
    만약 추가적인 브랜치를 생성하여 해당 브랜치로 이동하고 싶다면 다음과 같은 명령어를 사용하면 된다.
    $ git switch 브랜치이름
    혹은
    $ git checkout 브랜치이름
  • 브랜치 확인

    브랜치 목록과 현재 어떤 브랜치에 위치하고 있는지 확인하려면 다음 명령어를 사용하면 된다.
    $ git branch
    확인 후 빠져나오려면 q를 입력하면 된다.
  • 브랜치 생성과 이동

    브랜치를 생성하는 것과 동시에 바로 이동하고 싶은 경우에는 다음 명령어를 사용하면 된다.
    $ git switch -c 브랜치이름
    혹은
    $ git checkout -b 브랜치이름
  • 브랜치 삭제

    더 이상 사용하지 않는 브랜치를 삭제하고 싶은 경우에는 다음 명령어를 사용하면 된다.
    $ git branch -d 브랜치이름
  • 브랜치 병합

    두 브랜치를 병합해야 할 때도 있다.
    $ git merge 병합할브랜치이름
    이 때는 우선 최종 브랜치로 이동을 한 이후 다음 명령어를 사용하면 된다.
    merge 의 경우 분기된 두 브랜치를 하나의 커밋으로 병합하는 방식인데,
    그럼 히스토리에는 분기된 두 갈래가 합쳐지는 형태로 남게 된다.

    그런데 이렇게 두 갈래의 사용 내역을 남기는 것이 아니라 하나로 완전히 합치는 방식도 존재한다.
    $ git rebase 최종브랜치이름
    rebase 의 경우 한 줄로 내역을 정리해버리는 명령어이다.
    merge 와는 달리 병합할 브랜치로 이동을 한 이후 최종 브랜치를 rebase 명령어를 통해 병합한다.

2. 원격 저장소

2.1. 로컬 브랜치 원격 저장소로 push

우선 로컬에서 앞으로 작업할 브랜치를 생성한다.

$ git branch 브랜치이름

이후에 다음 명령어를 통해 원격 저장소에 로컬 브랜치를 push 할 수 있다.

$ git push --set-upstream 원격저장소이름 브랜치이름

혹은

$ git push -u 원격저장소이름 브랜치이름

2.2. 원격 저장소의 브랜치 로컬로 받기

다음 명령어를 통해 원격의 변경사항을 확인한다.

$ git fetch				# 원격의 변경사항 확인 
$ git branch -a			# 모든 브랜치 확인

그리고 다음 명령어를 통해 원격 저장소의 브랜치를 가져온다.

$ git checkout -t 원격저장소이름/원격브랜치이름

2.2. 원격 저장소의 브랜치 삭제

원격 저장소의 브랜치는 다음과 같이 삭제할 수 있다.

$ git push 원격저장소이름 --delete 원격브랜치이름

3. 협업 시 주의할 점

  • 협업하면서 충돌이 발생할 수 있기 때문에 해결하는 방법을 숙지해야 한다.
    충돌은 여러 사용자가 동시에 같은 파일을 수정할 때 발생할 수 있다.
    이 때 정기적인 백업도 중요하다. 작업 중인 내용을 잃지 않도록 주기적으로 로컬 저장소를 백업한다.
  • 명확하고 간결한 커밋 메시지를 작성하여 변경 사항을 쉽게 파악할 수 있도록 한다.
  • .gitignore 파일을 사용하여 불필요한 파일이나 디렉토리를 Git 추적에서 제외시킨다.

4. 회고

협업하는 과정에서 브랜치는 효율적이고 안정성을 높이는 데 큰 도움이 되는 전략이라고 생각한다.
기본 개념을 충분히 숙지하여 협업 시 효과적으로 활용할 수 있도록 노력해야겠다.

0개의 댓글