안녕하세요. 오늘은 깃을 브랜치 관리하는 방법에 대해 알아보고자 합니다.
브랜치를 사용하는 이유
1. 서비스의 안정적 유지
- release 버전에 영향을 미치지 않고 여러가지 기능을 테스트 해 볼 수 있다.
- 버그 수정 시 사용할 수 있다. 버그가 발생한 브랜치에서 새로운 브랜치를 만들어 버그를 수정 한 후 다시 원브랜치로 통합한다.
2. 시간에 따른 프로젝트 이력 관리
- 어느 시점에 버그가 발생했는지, 어떤 기능이 언제 추가했는지를 추적할 수 있다.
3. 버그 수정과 기능개발 분리
- 버그 수정과 새로운 개발을 각각의 브랜치에서 수행할 수 있다. 이는 기능 개발의 복잡성을 낮출 수 있다.
4. 동시 개발 시 편의성
- 각 개발자가 맡은 기능을 개발하기 위해서 각자의 브랜치에서 개발을 진행하다가, 개발 완료 후 branch를 통합하여 테스트 할 수 있다.
5. 코드리뷰 용이성
- 변경 사항을 검토하기가 편리하여, 특정 작업에 대한 코드 리뷰를 효과적으로 수행할 수 있다.
이처럼 브랜치를 사용하면, 프로젝트 관리가 수월해집니다. 브랜치를 효과적으로 관리하기 위한 방법으로 Git Branch 전략들이 많이 나와있는데, 이는 다른 블로거분이 잘 정리해주셔서, 링크로 대체하겠습니다.
https://github.com/DoTheBestMayB/UpbitAPI/issues/2
이제 git branch를 관리하기 위한 명령어에 대해 알아보겠습니다. 이 명령어들은 모두 staging 영역에서 작동하며, 이 부분을 미리 숙지하면 좋습니다. 다시 말해, push를 하기 전까지는 origin에 영향을 미치지 않습니다. 또한 HEAD는 현재 작업 중인 브랜치와 현재 커밋 위치를 나타냅니다
먼저 브랜치 테스트를 위한 작업공간을 만들겠습니다.
$ git init branchTest
$ cd branchTest
$ touch README
$ git add README.txt
aaa@DESKTOP-AAAAA MINGW64 /d/git/repositories/branch (master)
$ git commit -m readme
[master (root-commit) 149b39f] readme
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.txt
$ git log --oneline
149b39f (HEAD -> master) readme
commit 및 merge 이력 확인하기
현재 브랜치에서 확인가능한 커밋 이력과 브랜치 병합 이력을 살펴볼 수 있습니다. git log --oneline을 사용하면 이력을 간단하게 파악할 수 있지만, 커밋한 사용자를 찾거나 커밋일시를 확인하려면 git log를 활용해야합니다.
$ git log //커밋이력을 상세히 출력
$ git log
commit 149b39f33sssssssssssssssssssssssssssssdf (HEAD -> master)
Author: authorName <mailaddress@mail.com>
Date: Sat Nov 25 21:07:40 2023 +0900
readme
$ git log --oneline //하나의 커밋이력을 한줄로 출력
$ git log --oneline
149b39f (HEAD -> master) readme
브랜치 생성/변경/확인
$ git branch newBranch ## 1. 'newBranch'이라는 이름을 가진 새로운 브랜치 생성 (HEAD는 변경 없음)
$ git switch newBranch ## 2. 현재 브랜치를 newBranch으로 변경 (HEAD 변경)
$ git branch -m 'bugfix' ## 3. 현재 브랜치 이름을 'bugfix'으로 변경
$ git branch ## 4. 브랜치 리스트 확인
* bugfix ## *는 현재 브랜치를 의미합니다.
master
새로운 브랜치를 만들고 HEAD를 이동시키려면, 'git switch -c newBranch' 또는 'git checkout -b newBranch' 명령어를 사용할 수 있습니다. 이 중 'git switch -c newBranch'가 더 최신이면서 명시적인 명령어이므로, 가능하다면 이를 사용하는 것이 좋습니다
작업브랜치 이동
## 변경 전
$ git branch
* bugfix
master
## master 브랜치로 이동 및 HEAD 이동
$ git swtich master
## 이전 브랜치로 이동 및 HEAD 이동
$ git switch -
Switched to branch 'bugfix'
## 결과
$ git log --oneline
149b39f (HEAD -> bugfix) readme
과거의 커밋이력으로 HEAD 이동
사전준비
$ echo Hello world >> index.html
$ git add index.html
$ git commit -m indexFile
[bugfix bd16877] indexFile
1 file changed, 1 insertion(+)
create mode 100644 index.html
## 결과
$ git log --oneline
bd16877 (HEAD -> bugfix) indexFile
149b39f (master) readme
이전 커밋으로 이동
## 변경 전
$ git log --oneline
bd16877 (HEAD -> bugfix) indexFile
149b39f (master) readme
## 이전 커밋으로 이동
$ git switch -d HEAD~
HEAD is now at 149b39f readme
## 결과
$ git log --oneline
149b39f (HEAD, master) readme
## 특정 커밋이력으로 이동
$ git switch -d bd16877
Previous HEAD position was 149b39f readme
HEAD is now at bd16877 indexFile
## 결과
$ git log --oneline
bd16877 (HEAD, bugfix) indexFile
149b39f (master) readme
## master로 다시 변경
$ git switch master
Switched to branch 'master'
브랜치 삭제
## 변경 전
$ git log --oneline
149b39f (HEAD -> master) readme
## 삭제 테스트를 위한 main브랜치 커밋이력 생성
$ git add second.txt
warning: in the working copy of 'second.txt', LF will be replaced by CRLF the next time Git touches it
$ git commit -m 'second'
[master d4584bc] second
1 file changed, 1 insertion(+)
create mode 100644 second.txt
$ git log --oneline --graph --all
* d4584bc (HEAD -> master) second
| * bd16877 (bugfix) indexFile
|/
* 149b39f readme
## 삭제 테스트를 위한 새로운 브랜치 생성 및 커밋이력 생성
$ git branch newBranch
$ echo newBranch >> newBranch.txt
$ git add newBranch.txt
$ git switch newBranch
Switched to branch 'newBranch'
A newBranch.txt
$ git commit -m newBranch
[newBranch 1adb0d5] newBranch
1 file changed, 1 insertion(+)
create mode 100644 newBranch.txt
## 생선된 브랜치 및 커밋이력
$ git log --oneline --graph --all
* 1adb0d5 (HEAD -> newBranch) newBranch
* d4584bc (master) second
| * bd16877 (bugfix) indexFile
|/
* 149b39f readme
## 삭제를 위해 다른 브랜치로 이동
$ git switch master
Switched to branch 'master'
## merge된 브랜치 인 경우 삭제/mergee되지 않은 경우 삭제 불가
$ git branch -d newBranch
error: The branch 'newBranch' is not fully merged.
If you are sure you want to delete it, run 'git branch -D newBranch'.
## 강제 브랜치 삭제
$ git branch -D newBranch
Deleted branch newBranch (was 1adb0d5).
## 결과
$ git log --oneline --graph --all
* d4584bc (HEAD -> master) second
| * bd16877 (bugfix) indexFile
|/
* 149b39f readme
삭제를 위한 준비과정이 상당히 길었지만 'git branch -D newBranch' 명령어를 사용하면 삭제된다는 결론입니다!
'버전관리 > GIT_HUB' 카테고리의 다른 글
GIT Stash, commit하지 않고 변경이력 임시 저장하기! (0) | 2023.12.04 |
---|---|
GIT 병합 시 충돌은 왜 발생하는걸까? (브랜치 병합 충돌과 해결) (1) | 2023.12.01 |
GIT 브랜치 병합 (3) | 2023.11.29 |
GIT HUB 초기 푸시 프로세스 (0) | 2023.11.22 |
git commit 내역 복구 (0) | 2021.06.28 |
댓글