Branch
일반적으로 branch 는 main 또는 master라는 이름의 기본 branch 이다. 이는 프로젝트가 시작될 때 자동으로 생성된다.
마치 중간 save 같은것, 아주 작은 단위로 branch를 나누어 버전을 간편히 옮겨 수정 할 수있다. 따라서 안정성이 확보된다.
git의 head란?
현재 작업 중인 커밋을 가리킨다. 즉, '현재 Git이 어디를 바라보고 있는지'를 나타낸다. 기본적으로 작업트리의 최상단에 위치한다.
브랜치 생성하기
- git branch <branch-name>
브랜치 이동하기
- git switch <branch-name>
브랜치 생성하면서 이동하기
- git switch -c <branch-name>
터미널에서 모든 브랜치 정리하여 보기
- git log --oneline --all --graph
브랜치 삭제하기
- git branch -d <branch-name>
모든 브랜치 이름들만 보기
- git branch -a -all
주의할 것들
변경사항이 있으면 바로바로 커밋하기!
너무 많은 변경사항을 하나의 커밋에 포함하기
main 브랜치에서 작업하기 ( master 또는 main은 안정적인 버전을 유지하는 브랜치 )
merge (병합)
- 3- way merge (기능 브랜치 병합)
- Fast forward merge (빠른 포워드 병합)
필요한 이유 : 안정성 가독성 효율성
Fast Forwar Merge
merge하려는 해당 커밋중 하나의 브랜치에만 변경사항이 있을시 단순히 포인터를 옮겨감으로 된다.
3 way merge
merge 하려는 커밋에 포함된 기능을 하나로 통합해버린다
3 way merge의 간단한 예시
1. 브랜치 feature 를 만들어서 작업을 시작한다 (C0는 커밋을 나타냅니다.)
feature (HEAD) C0 - C1 - C2
2. feature 브랜치에서 작업을 하던 중, main 브랜치에서도 수정이 발생
feature C0 - C1 - C2
/
main (HEAD) C0 - C3
3. 이 상태에서 feature 브랜치를 main 브랜치로 병합하려고 한다. Git은 C1 과 C3 에서 변경된 사항을 분석하고, 이를 적용하여 새로운 커밋 C4 를 생성. 이것이 바로 3-Way Merge
feature C0 - C1 - C2
/ \
main (HEAD) C0 - C3 - - - - C4
3-Way Merge는 두 브랜치가 공통 조상에서 다르게 발전한 경우에 사용하는 병합 전략이다.
더 간단한 예시
master - 1번 - 2번
이라고 했을 때. 1번와 마스터를 합치려면 마스터로 스위치하고 마스터가 옮겨가면 됨.
2번으로 갈때도 마스터에서 옮겨가면 됨.
Git Conflict란?
Git 충돌(conflict)은 두 개 이상의 변경 사항이 Git의 병합 과정에서 서로 충돌할 때 발생하는 문제. 주로 여러 사람이 동시에 같은 파일의 같은 부분을 변경했을 때 이 문제가 발생함
충돌을 자동으로 해결할 수없어 사용자에게 수정을 요청함. (((예시)))
<<<<<<< HEAD
The quick brown fox...
=======
The quick blue fox...
>>>>>>> new_branch
충돌이 해결되면, 충돌 마커를 모두 제거한다. (<<<<<<<, =======, >>>>>>>).
add 후 커밋하면 끝!
'Git' 카테고리의 다른 글
[중앙정보처리학원] git* 과 github을 활용한 협업 (0) | 2024.03.07 |
---|---|
[중앙정보처리학원] git* restore, reset, revert 활용하기 (0) | 2024.03.06 |
[중앙정보처리학원] git* git diff와 stash 사용하기 (1) | 2024.03.05 |
[중앙정보처리학원] git* 및 github 사용하기 (0) | 2024.03.04 |