03. 깃과 브랜치
03-1 브랜치란?
커밋을 가리키는 포인터와 비슷하다고 생각하자
master 브랜치 : 최신 커밋
새 브랜치 : 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일
'분기한다' : master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것
'병합한다' : 분기했던 브랜치를 master브랜치에 합치는 것
03-2 브랜치 만들기
$git branch / $git branch [브랜치 이름] : 브랜치를 확인하거나 만들때 사용하는 명령
브랜치는 만들어지면서 master의 최근 커밋을 가져온다
저장소에 master, apple 2개의 브랜치가 존재한다
head->master이므로 현재 작업중인 브랜치는 master브랜치 라는 의미
master브랜치에만 새로운 커밋이 추가되었고, 나머지 브랜치들은 추가가 안되었다
-브랜치 사이 이동하기
$ git checkout [브랜치이름]
master브랜치에서 추가된 커밋은 다른 브랜치에 영향을 미치지 않았다는 것을 알 수 있다!
03-3 브랜치 정보 확인하기
$ git log --oneline --branches // 각 브랜치의 커밋 상태를 볼 수 있음
$ git add . // 현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 올릴 수 있다.
$ git log --oneline --branches --graph
apple 브랜치의 최신 커밋은 apple content 4
부모 커밋은 work3임
master 브랜치의 최신 커밋은 master content4
부모 커밋은 work3임
-브랜치 사이의 차이점 알아보기
$ git log master ..apple ==> master브랜치 기준으로 master브랜치에는 없고 apple브랜치에만 있는 커밋을 보여준다
$ git log apple ..master ==> apple브랜치 기준으로 apple브랜치에는 없고 master브랜치에만 있는 커밋을 보여준다
03-4 브랜치 병합하기
브랜치 병합은 $ git checkout master 를 통해 꼭 master에서 해줘야한다!
$ git merge [병합할 브랜치] ==> Merge branch [병합할 브랜치명] 이라는 커밋이 새로 생긴다
-같은 문서의 다른 위치를 수정했을 때 병합하기
-같은 문서의 같은 위치를 수정했을 때 병합하기
-병합이 끝난 브랜치 삭제하기
브랜치 삭제도 master브랜치에서 해야한다
$ git branch -d [브랜치 명]
(master 브랜치에 병합하지 않은 브랜치를 삭제하려면 -D를 이용해 강제로 브랜치를 삭제할 수 있음)
삭제한 브랜치는 같은 이름으로 다시 브랜치를 만들면 예전으로 작업했던 내용이 그대로 나타난다.
브랜치를 삭제하는 것은 완전히 저장소에서 없애는 것이 아니라 깃의 흐름 속에서 감추는 것이다.
03-5 브랜치 관리하기
-브랜치에서 checkout과 reset의 작동원리
HEAD : 현재 작업트리가 어떤 버전을 기반으로 작업 중인지를 가리키는 포인터.
브랜치는 브랜치에 담긴 커밋 중에서 가장 최근의 커밋을 가리킨다.
$ git checkout [브랜치명] // head가 가리키는 것을 제어하는 명령
$ git reset [커밋 해시 값] // 현재 브랜치가 가리키는 커밋을 여러 브랜치 사이를 넘나들면서 제어 할 수 있음
명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제된다.
-수정 중인 파일 감추기 및 되돌리기 - git stash
[브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우 ! 당장 커밋 하지 않을 작업들은 감춰둘 수 있다]
$ git stash (save)// 이것을 사용하려면 파일이 tracked상태여야한다. (한번은 커밋이 되야함)
$ git stash pop // 수정된 상태가 저장된 상태 그대로 돌아간다. 계속 수정하거나 커밋할 수 있음
'기타 > Git' 카테고리의 다른 글
[Github] 깃 허브에 폴더 전체 업로드 방법! (0) | 2022.03.08 |
---|---|
[Eclipse - Git 협업 오류] Pulling 1 repository . See 'Details' for more information.Cannot pull into a repository with state: MERGING (0) | 2021.11.10 |
[4일차] Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문 / 5장 6장 (0) | 2021.02.07 |
[3일차] Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문 / 4장 (0) | 2021.02.03 |
[1일차] Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문 / 1장, 2장 (0) | 2021.02.01 |