[Git] Git Branch 사용하기
💡 해당 내용은, 생활코딩 영상을 기반으로 작성하였습니다.
Git Branch 개요
- 💫 Branch를 만들다 : 작업을 진행하다가 분기되는 현상
- 💫
git checkout -b 브랜치명
- git branch 브랜치명 + git checkout 브랜치명
- 즉, 브랜치 생성과 체크아웃을 동시에 하는 명령어
- 💫 Master Branch : Git을 사용하는 순간부터 기본 브랜치를 사용하게 되는데 해당 브랜치가 master임
- 💫 Branch 사용 예시
- 고객사에게 제공하는 특별한 기능이 추가되는 경우에 원래 소스 코드를 변경하지 않으면서 고객을 위한 커스텀 코드를 추가해야하는 경우
- 필요없어 보이는 개발건에 관해 Branch를 만들어서 작업 진행
- 지금까지 개발한 건을 서버에 반영해야해서 테스트 용이 따로 필요할 때, 즉 메인이 되는 작업과 테스팅을 위한 작업이 나뉠때
Branch 생성 및 사용 기초
- 파일 생성
vim f3.txt
: 내용 작성 및 저장 (I > 내용 작성 > esc > :wq)git commit -m “1”
: 커밋메세지 바로 작성vim f3.txt
: 내용 수정 및 저장git commit -am “2”
-a
: commit 전에 add가 바로 됨 - 아직 버전관리가 되고 있지 않은 파일, 즉 한번도 add가 되지 않은 파일은 자동으로 add가 되지 않음-m
: 커밋메세지 바로 작성git log
: 로그 확인
- Branch 확인
git branch
: 현재 우리가 보유하고 있는 branch를 확인하는 명령어
- Branch 생성
git branch 브랜치이름
: 해당 이름을 가진 브랜치를 생성하는 명령어Git branch
를 통해 브랜치 생성 확인 : exp와 *master 두개가 존재함 -> *표시는 현재 사용하고 있는 브랜치라는 뜻
- 현재 사용하고 있는 Branch 변경
git checkout 사용하고자하는브랜치
git branch
해보면 exp에 * 표시 있는 것 확인 가능git log
를 통해 로그 확인 : master과 결과가 같음 —> ** 즉, 브랜치를 생성하면 그 생성한 브랜치는 현재 속해있는 브랜치의 상태를 그대로 복사함
- 파일 내용 변경 후 add, commit
vim f3.txt
해서 내용 변경git add f3.txt
git commit -m “3”
git log
: 커밋메시지 3까지 보임git checkout master
>git log
: 마스터 브랜치로 변경한 뒤 로그 확인하면 커밋메세지 2까지밖에 안보임cat f3.txt
: 브랜치에 따른 파일의 내용 확인 —> 속해있는 브랜치에 따라 같은 파일의 내용이 달라짐- exp : abc
- Master : ab
Branch 정보 확인 방법
git log —branches
: 현재 자신이 Checkout 되어있는 Branch 외의 모든 Branch를 보여줌-
git log —branches —decorate
- 브랜치 마다의 가장 최신 커밋이 무엇인지까지 나타내줌
- (HEAD -> exp) : 현재 우리가 Checkout 되어있는 브랜치가 exp임을 알려줌
-
git log —branches —decorate —graph
- Git Graph를 보여줌
- master로 checkout한 뒤 파일 수정 > add > commit 진행하기
-
git log —branches —decorate —graph
- 해당 명령어를 통해 브랜치간의 공통 조상 확인
-
git log —branches —decorate —graph --online
- 한줄로 깃그래프를 보여줌
Branch 간의 차이점을 확인하는 방법 3가지
-
git log 브랜치1..브랜치2
: Branch 간의 차이점을 확인하는 명령어로서 브랜치1에는 있고 브랜치2에는 없는 내용 확인 가능 -
git log -p 브랜치1..브랜치2
: 소스코드까지의 차이점을 확인할 수 있음 -
git diff 브랜치1..브랜치2
Branch 병합(Merge)시키기
Exp의 내용을 Master Branch로 옮기기
git checkout Master
: 마스터 브랜치로 체크 아웃함git merge exp
- exp의 내용을 머지시킴
- 해당 명령어 입력하면 merge했다는 커밋메세지가 vim으로 뜨게 되고, :wq를 입력해 저장 후 종료하면됨
- 머지 후에
git log —branches —graph —decorate —oneline
으로 브랜치 관계 확인
- 2개의 부모를 가짐 : 5번, 3번
- Exp Branch로도 동일한 작업 수행
- Exp Branch로도 동일한 작업 수행
- (HEAD -> exp, master) : 두개가 동일한 브랜치가 되었음을 확인함
git branch -d exp
: 사용하지 않는 브랜치 삭제
- (HEAD -> master) : exp가 삭제되어 master branch만 남은 것 확인
git branch -D exp
: Branch 를 Merge하지 않았을 때 강제로 삭제하는 방식
Branch 충돌 해결
- Branch 충돌 경우 예시
- 문제 없을 경우 :
- 같은 이름의 파일이 다른 내용을 가지고 있을 때 Merge할 경우에, 파일의 내용이 모두 병합됨
- 같은 파일임에도 수정한 위치가 다르다면 모든 내용이 병합됨
- 문제 있을 경우 :
- 그러나, 같은 파일에서 같은 내용이 수정되었을 때 브랜치 충돌이 일어남
- 해결 방법 (both modified)
-
- 충돌난 파일을 열어봄
- ====== 구분자 위에 ««< HEAD 라고 되어있는 부분이 현재 체크아웃된 브랜치이고, 아래 »»> exp 부분이 해당 브랜치의 내용이라는 뜻
- 해당 파일에서의 충돌 내용을 직접 수정한 뒤
git add
>git commit
하게 되면 해당 Conflict된 부분이 처리 되었다는 것을 확인할 수 있음
-
Leave a comment