티스토리 뷰
$ git branch : 브랜치 목록 보기. 목록에서 *이 붙은 건 현재의 브랜치
$ git branch —merged / $ git branch —no-merged : merge된 브랜치인지 아닌지 목록
merge되지 않은 브랜치는 아직 merge하지 않은 커밋을 담고 있기 때문에 git branch -d 명령으로 삭제할 수 없다.
강제 삭제는 -D
브랜치와 merge 기초
아래 상황에 따라 알아보자!
나는 현재 hotfix 만들고 merge하는게 서툴러서 <상황2>의 3번 과정 부터 자세히 다룰 것이다!
<상황1>
1. 웹사이트가 있고 뭔가 작업을 진행하고 있다.
2. 새로운 이슈를 처리할 새 Branch를 하나 생성한다.
3 새로 만든 Branch에서 작업을 진행한다.
<상황2>
이때 중요한 문제가 생겨서 그것을 해결하는 Hotfix를 먼저 만들어야 한다.
그러면 아래와 같이 할 수 있다.
1. 새로운 이슈를 처리하기 이전의 운영(Production) 브랜치로 이동한다.
2. Hotfix 브랜치를 새로 하나 생성한다.
3. 수정한 Hotfix 테스트를 마치고 운영 브랜치로 Merge 한다.
4. 다시 작업하던 브랜치로 옮겨가서 하던 일 진행한다.
중간에 버그를 수정하기 위해 만든 hotfix 브랜치에서 작업을 완료하고 master에 합쳐야 할 때
$ git checkout master : 우선 master 브랜치로 이동한다.
$ git merge hotfix : hotfix가 가리키는 C4커밋이 master의 C2커밋에서 기반한 것이기 때문에 merge과정 없이 그저 최신 커밋으로 이동한다. 이 과정을 Fast-forward라고 한다.
merge 후 같은 커밋을 가리키는 master와 hotfix
$ git branch -d hotfix 버그를 해결하여 더이상 쓸모 없어진 hotfix브랜치는 삭제한다. (선택)
이제 다시 iss53을 처리하러 가보자.
master와 별개로 작업중인 iss53 53번 이슈를 다 구현하고 master브랜치에 merge하는 과정
$ git checkout master : 마찬가지로 master 브랜치로 이동한다.
$ git merge iss53 : 합치고자 하는 브랜치 iss53을 merge한다.
이때는 iss53과 master가 각각 다른 커밋에서 기반하기 때문에 3-way merge가 일어난다.
각 브랜치(master, iss53)들이 가리키는 커밋 두개를 합친 공통 커밋 하나를 생성하여 merge한다.
따라서 별도로 생성된 C6 커밋을 가리키게 된다.
$ git branch -d iss53 마찬가지로 issue를 해결하여 쓸모없어진 iss53 브랜치는 삭제하면 된다.
충돌 (conflict)
merge를 할 때 실패하는 경우가 있다. 바로 충돌(conflict)이 나는 경우이다.
충돌은 두 브랜치에서 공통된 부분을 수정했을 때 발생한다. 충돌이 나면 conflict 메세지가 출력되고, merge되지 않는다.
즉 3-way merge가 실패한다.
$ git status : 어떤 파일에서 충돌이 일어났는지 볼 수 있다.
충돌이 일어난 파일은 unmerged 상태로 표시된다.
충돌난 부분은 수동으로 해결한다. 해당 파일에 가보면 git이 친절하게 충돌난 부분을 눈에 띄게 /////// 등의 표시로 표시해준다.
해결하고 나서 $ git status 명령을 통해 충돌이 잘 해결됐는지 다시 한번 확인할 수 있다.
충돌을 해결했으면
$ git add .
$ git commit 을 통해 merge한 것을 커밋한다.
이 글은 아래 git 공식 페이지를 참고하면서 공부해본 내용을 정리한 것이다. 더 상세한 설명과 예시를 보고 싶으면 아래 참고 사이트를 참고하길 바란다!
<참고사이트>
'Study > git' 카테고리의 다른 글
[git 기초] 리모트 브랜치 remote branch, upstream, remote tracking branch, 리모트 refs (0) | 2021.09.05 |
---|---|
[git 기초] 리모트 저장소 | origin, git remote, push/pull/fetch (0) | 2021.09.04 |
[git 기초] 저장소에서 파일 관리하기, 파일 라이프사이클, add, commit (0) | 2021.09.04 |
[git 초보자를 위한] git 저장소 만들기 | init, clone (0) | 2021.09.04 |
- Total
- Today
- Yesterday
- 병돌리기구현
- AWSBedrock
- ChatGPT
- partyrock
- partyrock사용볍
- 오블완
- awsgenai
- easycode
- PYTHON
- 정적 웹사이트 배포
- genaiapp
- 술자리병돌리기게임
- S3 403 forbidden
- BOJ
- 정적 웹페이지 배포
- S3배포
- React native 작동 원리
- 티스토리챌린지
- 백준
- partyrock앱
- partyrock생성
- easycode chatGPT
- 코딩테스트
- 파이썬
- partyrock무료
- aws생성형ai
- 알고리즘
- vscode easycode
- 생성형AI
- SpacewBetween
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |