브랜치 란???
커밋을 가리키는 포인터이다.
분기하다 란???
master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 의미한다.
병합하다(merge) 란???
분기했던 브랜치를 master 브랜치에 합치는 것을 의미한다.
새 브랜치 만들기
$ git branch : 브랜치를 만들거나 확인하는 명령
( $ git branch 했을 때 여러 브렌치 중에 사용자가 현재 사용하고 있는 브랜치 앞에 *가 붙는다)
브렌치를 만들었으니 master브랜치에서 다른 브랜치로 이동하는 방법을 배워야 한다
브랜치 이동하기
$ git checkout apple : apple이라는 이름의 브랜치로 이동한다
$ git log --oneline : 한 줄에 한 커밋씩 나타내기
브랜치 정보 확인하기
$ git add . : 현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 올리기
$ git log --oneline --branches : 각 브랜치의 커밋을 한 커밋씩 나타내기
$ git log --oneline --branches --graph : 브랜치와 커밋의 관계를 그래프 형태로 나타내기
브랜치와 브랜치 사이의 차이점 알아보기
ex ) master 브랜치와 apple 브랜치 사이의 차이점이 무엇인지 확인
$ git log master..apple : master 브랜치를 기준으로 apple 브랜치와의 차이 확인
$ git log apple..master : apple 브랜치를 기준으로 master 브랜치와의 차이 확인
브랜치 병합하기
브랜치 병합(merge) : 위에서 브랜치 작업을 마무리하고 기존 브랜치와 합치는 것이라고 함
서로 다른 파일 병합하기
$ git init manual-2 : git init 다음에 디렉터리 이름을 입력하면 새로운 디렉터리를 만들고 저장소를 초기화하는 과정을 한꺼번에 처리
cf)
$ git merge AA --no-edit : 브랜치를 병합할 때 편집기 창이 열리지 않게 한다
$ git merge BB --edit : 브랜치를 병합할 때 편집기 창이 나타나지 않도록 설정한 경우, 커밋 메시지를 추가하거나 수정하고 싶다면 병합 명령에 --edit 옵션을 사용한다
같은 문서의 다른 위치를 수정했을 때 병합하기
Q1) master브랜치와 내가 만든 브랜치에 똑같은 파일 work.txt라는 파일이 있는데 서로 다른 위치를 수정한 후 브랜치를 병합했을 때 어떤 결과가 나오나?
A) master브랜치의 수정 내용과 내가 만든 브랜치의 수정 내용이 자연스럽게 하나의 파일에 합쳐진 것을 볼 수 있다.
같은 문서의 같은 위치를 수정했을 때 병합하기
Q2) 위의 상황과 반대로 같은 위치를 수정한 후 브랜치를 병합했을 때 어떤 결과가 나오나?
A) CONFLICT(content) : Merge conflcit in work.txt
Automatic merge failed, fix conflicts and then commit the result라는 충돌 메시지와 함께 병합될 수 없다.
아래 두 가지의 경우중 하나를 제거하고 머지해야 됨
1) <<<<<<<HEAD
=========== -> 현재 브랜치(즉, 마스터 브랜치에서 수정한 내용)
2) ==========
>>>>>>>>>AAA -> AAA 브랜치에서 수정한 내용
==> 수정한 후 저장한 다음 스테이지에 올리면 끝( $ git commit -am )
병합이 끝난 브랜치 삭제하기
** 브랜치를 삭제하더라도 완전히 지원지는 것이 아니라 다시 같은 이름의 브랜치를 만들면 예전 내용을 볼 수 있다.
** 기존 브랜치는 master 브랜치 이므로 브랜치를 삭제하려면 master 브랜치에서 해야 한다
$ git branch -d : 브랜치 삭제(마스터 브랜치에서)
브랜치 관리하기
HEAD -> master에서
HEAD의 의미 : 현재 작업트리(워킹 디렉터리가) 어떤 버전을 기반으로 작업 중인지를 가리키는 포인터
git checkout : HEAD를 제어해서 브랜치를 이동할 수 있다.
git reset : HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있다.
수정 중인 파일 감추기 및 되돌리기
아직 커밋하지 않고 작업 중인 파일들을 감추기
조건 : 파일이 tracked 상태여야 한다. 즉 한 번은 커밋한 상태여야 한다
가장 먼저 감춘 것 stash@{0}이 되고 다른 파일이 추가되면 stash@{1} {2} {3}.... 이 된다
-> 가장 최근 것이 위에 쌓인다. => stash 스택이라 부름
stash 명령어
$ git stash list : stash 목록보기
$ git stash pop : 가장 최근 항목 되돌리기 -> 꺼내와서 다시 수정하거나 커밋할 수 있다.
'Git' 카테고리의 다른 글
4강 깃허브로 백업하기 5강 깃허브로 협업하기 (0) | 2020.01.01 |
---|---|
2-2강 버전 만드는 단계마다 파일 상태 알아보기 (0) | 2019.12.28 |
2강 깃으로 버전 관리하기 (0) | 2019.12.27 |
1강 깃 시작하기 (0) | 2019.12.27 |