[TortoiseGit] Branch 생성 및 커밋
Git 서버에 새로운 브렌치를 추가해야 되는 경우가 있습니다.
쉘 명령어가 아닌 Tortoise 프로그램을 사용하여 branch를 생성하는 방법을
알아보겠습니다.
1. 먼저, 로컬 디렉토리(로컬 GIT 저장소)의 마우스 오른쪽 버튼을 클릭하고,
TortoiseGit - Create Branch 로 들어갑니다.
2. 아래에 해당하는 팝업이 뜨면, 새로 생성할 브렌치 명을 입력하고,
'Switch to new branch' 선택 후,
'OK'를 클릭합니다.
3. 2번 순서에서 'Switch to new branch'를 선택하지 않은 경우,
다음과 같은 방법으로 로컬 브렌치를 변경할 수 있습니다.
4. 로컬 저장소에 새로운 브렌치로 변경되었으면, 원격(remote) 저장소에도 새로운 브렌치를 생성하고,
로컬 브렌치와 원격 브렌치를 연결하여 동기화 처리 합니다.
(여기서 동기화란, 커밋이나 푸쉬 등을 통해 파일 등의 데이터의 버전을 일치 시켜주는 것을 의미 합니다.)
※ 원격(Remote) 저장소에 로컬 저장소의 브렌치명과 일치하는 브렌치가 없을 경우,
'OK' 버튼을 누르면 자동으로 원격 저장소에 해당 브랜치가 새로 생성되고 커밋(푸쉬) 동작이
수행됩니다.
※ 이후, 여러 브랜치가 생기므로
커밋, 푸쉬 동작 시 'From, To 브랜치' 사용에 유의해야 합니다.
(브랜치 기본 개념 정리)
Git은 분산형 버전 관리 시스템(DVCS)으로, 개발자가 프로젝트의 소스 코드를 효율적으로 관리하고 협업할 수 있도록 도와줍니다. Git의 가장 큰 특징 중 하나는 브랜치(Branch) 기능입니다. 브랜치는 독립적인 작업 환경을 제공하여 서로 다른 기능 개발, 버그 수정, 실험적 작업 등을 안전하게 진행할 수 있게 합니다. 본 글에서는 Git에서 브랜치를 생성하고 관리하는 방법과 관련 용어들에 대해 상세히 알아보겠습니다.
1. Git 브랜치 생성 및 관리
1.1. 브랜치 생성
Git에서 브랜치는 기본적으로 git branch 명령어를 사용하여 생성할 수 있습니다. 브랜치는 새로운 기능을 개발하거나, 버그를 수정하는 등의 작업을 할 때 주로 사용됩니다. 기본적인 브랜치 생성 명령어는 다음과 같습니다.
git branch <브랜치명>
예시:
git branch feature/login
이 명령어는 feature/login이라는 이름의 새 브랜치를 생성하지만, 브랜치로 전환하지는 않습니다. 브랜치를 생성만 하고 다른 작업을 계속할 수 있습니다.
1.2. 브랜치 전환
새로 생성한 브랜치로 이동하려면 git checkout 명령어를 사용합니다.
git checkout <브랜치명>
예시:
git checkout feature/login
Git 2.23 이후로는 git switch 명령어를 사용하여 브랜치를 전환할 수도 있습니다. 이는 브랜치 전환을 더 직관적으로 도와주는 명령어입니다.
git switch <브랜치명>
1.3. 브랜치 생성과 전환을 동시에
git checkout -b <브랜치명> 명령어를 사용하면 브랜치를 생성하고 바로 해당 브랜치로 이동할 수 있습니다. Git 2.23 이후에는 git switch -c <브랜치명> 명령어로도 동일한 작업을 할 수 있습니다.
git checkout -b feature/login
혹은
git switch -c feature/login
이 명령어는 feature/login이라는 새로운 브랜치를 생성하고, 해당 브랜치로 즉시 이동합니다.
1.4. 브랜치 목록 보기
현재 작업 중인 Git 저장소에서 존재하는 모든 브랜치를 보려면 git branch 명령어를 사용합니다. 원격 브랜치도 포함하여 전체 브랜치를 확인하려면 -a 옵션을 추가합니다.
git branch
원격 브랜치 포함 보기:
git branch -a
1.5. 브랜치 삭제
브랜치를 더 이상 사용하지 않는 경우 삭제할 수 있습니다. 로컬 브랜치는 -d 옵션으로 삭제할 수 있고, 강제로 삭제하려면 -D 옵션을 사용합니다.
git branch -d <브랜치명>
강제 삭제:
git branch -D <브랜치명>
원격 브랜치를 삭제하려면 다음 명령어를 사용합니다.
git push origin --delete <브랜치명>
2. Git에서의 주요 브랜치 용어
2.1. 마스터/메인 브랜치(Master/Main Branch)
Git 저장소에서 기본적으로 사용하는 주요 브랜치입니다. 이전에는 master라는 이름이 일반적이었으나, 최근에는 main이 표준으로 자리잡고 있습니다. 이 브랜치는 보통 최종적으로 배포 가능한 상태의 코드를 유지합니다.
2.2. 기능 브랜치(Feature Branch)
새로운 기능을 개발할 때 사용되는 브랜치입니다. 각 기능별로 독립적인 작업을 진행할 수 있게 해줍니다. 예를 들어, feature/login, feature/signup과 같은 이름을 사용할 수 있습니다.
2.3. 버그 수정 브랜치(Bugfix Branch)
버그 수정 작업을 위한 브랜치로, 버그 수정 후 메인 브랜치로 병합하여 최종적으로 문제를 해결합니다. bugfix/issue123와 같이 작성할 수 있습니다.
2.4. 핫픽스 브랜치(Hotfix Branch)
긴급하게 배포해야 하는 수정 사항을 처리하는 브랜치입니다. 보통 master 브랜치에서 바로 생성되며, 수정 후 다시 master와 develop 브랜치에 병합됩니다. 실시간 운영 시스템에서 문제가 발생했을 때 빠르게 수정할 수 있는 브랜치입니다.
2.5. 배포 브랜치(Release Branch)
배포 준비를 위한 브랜치입니다. 기능이 완료되면 이 브랜치에서 버그 수정 및 최종 테스트가 진행됩니다. 이후 메인 브랜치와 병합하여 실제 배포가 이루어집니다.
2.6. 원격 브랜치(Remote Branch)
원격 저장소에서 관리되는 브랜치를 의미합니다. 원격 저장소의 브랜치는 origin/main과 같이 표시됩니다. 원격 브랜치에서 작업을 가져오거나 푸시할 때 사용됩니다.
3. Git에서의 브랜치 병합(Merge)
3.1. 브랜치 병합
브랜치를 생성하고 작업을 완료한 후에는 해당 브랜치를 메인 브랜치나 다른 브랜치에 병합해야 합니다. 병합은 git merge 명령어로 수행합니다.
git merge <병합할 브랜치명>
예시:
git checkout main
git merge feature/login
이 명령어는 feature/login 브랜치의 변경 사항을 main 브랜치에 병합합니다.
3.2. 병합 충돌(Conflict)
병합 시 충돌이 발생할 수 있습니다. 충돌은 두 브랜치에서 동일한 부분을 다르게 수정했을 때 발생합니다. 충돌을 해결하려면 해당 파일을 수동으로 수정하고, git add 명령어로 변경 사항을 스테이징하여 병합을 완료합니다.
4. Git에서 유용한 브랜치 관련 명령어
- 브랜치 병합 상태 확인:
git status - 브랜치 병합 기록 보기:
git log --graph --oneline - 브랜치 간 차이점 확인:
git diff <브랜치1> <브랜치2> - 브랜치 변경 사항 확인:
git diff <브랜치명>