branch는 분리된 작업 공간을 말한다. 해당 명령어로 현재 작업 공간의 데이터를 기반으로 분기하여 새롭고 분리된 작업 공간을 생성할 수 있다. branch를 나누어 작업하면 conflict를 해소하는데 도움이 된다. 사용자들 마다 각각의 branch에서 작업하고 main branch로 merge하는 방식이 일반적이다.
작업자 간의 작업 효율성을 위해서는 branch를 목적에 맞게 생성 및 분리하여 작업하고, 목적 달성 시 바로 main branch에 merge하는 것이 좋다. 또한, 작업 branch와 배포할 목적을 가진 branch를 나누어 관리할 수도 있다.

branch
branch는 코드의 특점 시점을 기준으로 분기하여 독립적으로 각각의 commit 내용을 기록한다. merge 전까지는 다른 branch와 충돌할 염려가 없다. 새로운 repository를 생성하고 작업하는 공간도 하나의 branch이며 보통 main이라는 이름을 가진다.
// branch 목록 확인
git branch
// local과 remote를 포함하여 branch 목록 확인
git branch -a
위의 명령어를 통하여 repository의 현재 branch 목록을 확인할 수 있다.

위 입력 예시에서는 3개의 branch가 존재하며 현재 작업 공간은 main이다.
// branch 생성
git branch <생성할 branch 이름>
// branch 이름 변경
git branch -m <새로운 branch 이름>
// branch 삭제 (merge된 상태에서만 삭제 가능, merge하기 전이면 오류메세지 출력)
git branch -d <branch 이름>
// 강제 삭제 (merge 전이어도 강제 삭제)
git branch -D <branch 이름>
// remote에서의 branch 삭제
git push <저장소 이름> --delete <branch 이름>
//ex(origin에서 main branch 삭제)
git push origin --delete main
git branch <생성할 branch 이름> 명령어는 현재 작업 공간의 데이터를 기반으로 branch를 생성만 할 뿐 작업 공간을 전환해주지는 않는다. 작업 공간을 전환하기 위해서는 아래의 checkout 명령어를 활용해야 한다.
checkout
checkout 명령어는 branch를 전환하거나 특정 commit 시점으로 복구할 때 사용되며 checkout 명령어의 옵션을 통하여 branch를 생성하고 바로 해당 branch로 작업 공간을 전환할 수 있다.
// branch 전환
git checkout <전환할 branch 이름>
git switch <전환할 branch 이름>
// branch 생성 및 전환
git checkout -b <새로운 branch 이름>
git switch -c <새로운 branch 이름>
// 특정 파일을 이전 상태로 복구
git checkout <commit 해시값> -- <파일 이름>
git restore --source=<commit 해시값> <파일 이름>
// 특정 파일을 마지막 commit 상태로 복구
git checkout HEAD -- <파일 이름>
git restore <파일 이름>
// 특정 파일을 한 commit 전으로 복구
git checkout HEAD~1 -- <파일 이름>
// working directory를 특정 commit 상태로 전환
git checkout <commit 해시값>
commit 마다 고유한 해시 값을 가지며 이는 commit ID라고도 부른다. 이를 활용하여 특점 시점으로 이동 가능하다.
"git checkout <commit 해시값(ID)>"는 과거의 commit에 대한 데이터 상태를 확인할 때 자주 사용한다.
'Git' 카테고리의 다른 글
| [Git] Merge Conflict specification (0) | 2024.11.03 |
|---|---|
| [Git] branch 병합 (merge & rebase) (0) | 2024.11.03 |
| [Git] Remote repository의 최신 정보 다운로드 (pull & fetch) (1) | 2024.11.03 |
| [Git] Remote repository 업로드 (push) (1) | 2024.11.02 |
| [Git] stage area 등록 및 제거 (add, rm & reset & restore) (0) | 2024.11.02 |