Git 뿌시기 - branch
버전관리를 할때마다 파일의 숫자가 커지고, 다양한 사람들에게 협엽되고 있는 상황에서는
다음과 같이 점점 더 버전관리를 하기가 어려워 질 것이다.
깃을 사용해서 매우 효율적으로 버전 관리가 가능해짐
작업이 분기되는 상황 -> branch를 만듬
기본적인 작업은 이미 하나의 브랜치에서 작업되고 있다고도 이해할 수 있음.
새로운 디렉토리에서 저장 후 2개의 버전 생성
branch를 사용하는 경우?
- 기능을 버려야 할 가능성이 있는 경우 -> 분기 후 작업 진행
- 개발 진행 중 지금까지 작업한 것을 서버에 반영 후, 여러 테스트를 하며 문제점이 없는지 테스트할때는 메인이 되는 작업과 테스트를 분기해야 되는 경우 등
현재 마스터라는 기본 브랜치를 사용하고 있음을 확인 가능
새로운 브랜치 생성
git branch exp_(기능명)
현재는 마스터 브랜치에 있으며, exp 브랜치로 이동하기 위해
git checkout exp
명령어를 통해 브랜치 이동
처음 브랜치를 팠을땐, 마스터브랜치, exp 브랜치 같은 상황 즉, 모두 같은 내용 그대로 공유함
exp 브랜치에서 f1.txt 파일을 수정 후 add, commit
다시 마스터 브랜치 이동 후 log를 체크해보면 2번째 버전까지만 있음을 확인 가능
exp 브랜치에서 f2.txt파일 만든후 add commit
다시 마스터 브랜치로 돌아오고 나면, f2.txt가 없는걸 확인 가능
branch 정보확인
git log --branches --decorate --graph (--oneline)
현재 저장소에 있는 모든 브랜치에 대한 로그정보 확인 가능
현재 exp에는 내용이 변경되었지만, master는 아직 변경 X
마스터 브랜치도 내용 변경 후 확인
exp 브랜치는 최신 커밋이 4이고 2라는 커밋으로부터 비롯된 것임을 확인 가능하며, 마스터 브랜치도 2에서 5로 이동했음을 확인 가능
브랜치간의 차이점을 확인하고 싶을 경우
: branch1에는 없고, branch2에는 있는 커밋 확인 가능
git log (branch1)..(branch2)
각각의 브랜치의 현재 상태 비교
mastert에는 있는데, exp에는 없는 걸 확인하는 로그
git diff (branch1)..(branch2)
branch 병합(MERGE)
현재까지의 작업 상황
exp의 내용을 master branch로 옮기고 싶은 경우 master branch 에서 exp를 merge
git checkout master
git merger exp
master는 자기가 작업한 버전5와 exp에서 작업한 3,4 버전을 모두 갖게 됨
이번엔 master를 exp로 가져와보자
-> exp와 master와 같은 커밋을 가지고 있음을 확인 가능
작업이 끝났으므로, exp는 없애버리자
master branch로 이동후
git branch -d (branch_name)
branch의 원리
맨 처음 git init을 하면 생성되는 HEAD 파일 : refs/heads/master
커밋 후 refs/heads/master 파일 생성
refs/heads/master 파일은 방금 내가 한 커밋을 가리키고 있음
두번째 커밋 이후엔
git log를 했을때 보여주는 가장 최신의 커밋을 알려주는 원리
: 깃은 헤드라는 파일을 갖고 있으며, 그 헤드라는 파일은 refs/heads/master를 가리키고 있고 이 파일은 가장 최근의 커밋한 커밋의 object id값을 가리키고 있기 때문에 깃 로그를 하면 헤드파일 -> 헤드의 마스터 파일 -> 마스터파일으 커밋 id값을 보고 가장 최신의 커밋을 알아낼 수 있음
깃에서 브랜치는 단지 refs 디렉토리 밑에 있는 파일을 의미함
새로운 브랜치 생성 후
refs/head/exp 밑에서 가장 최신의 커밋인 2를 가리키고 있음
rm .git/refs/head/exp
을 실행하면 exp 브랜치가 사라짐
vim .git/refs/head/exp
해당 디렉토리에 가장 최신 커밋 오브젝트의 아이디를 입력해 파일을 만든다면 exp라는 브랜치가 다시 생성됨
즉 깃에서, 브랜치는 단순히 텍스트 파일 하나임!
브랜치를 바꾼후에는 헤드파일이 변경됨
헤드는 refs/head/exp를 가리킴
f2.txt를 생성한다면, 헤드는 커밋3을 가리키고 있고,
마스터로 브랜치를 옮긴 후 헤드를 보면 커밋 2를 가리키고 있음을 확인 가능
Author And Source
이 문제에 관하여(Git 뿌시기 - branch), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@eclat12450/Git-뿌시기-branch저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)