AJ 님의 "Advanced Git" 슬라이드 Study - 2
Git HEAD Pointer 및 Branch Pointer 설명
1. Git 명령의 대부분은 File 보다는 Commit 객체를 다룬다.
2. Git 에서의 HEAD와 Branch는 Pointer임을 기억하자.
1. C1(첫 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화
- C1(첫 번째 commit 객체) 생성 후 HEAD Pointer는 기존 master Branch를 가리키며, 해당 branch(master) Pointer는 C1(첫 번째 commit 객체) Pointer를 가리킨다.
2. C2(두 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화
- C2(두 번째 commit 객체) 생성 후 HEAD Pointer는 기존 master Branch를 가리키며, 해당 branch(master) Pointer는 C2(두 번째 commit 객체)를 가리킨다.
3. C3(두 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화
- C3(세 번째 commit 객체) 생성 후 HEAD Pointer는 기존 master Branch를 가리키며, 해당 branch(master) Pointer는 C3(세 번째 commit 객체)를 가리킨다.
4. 새로운 Branch(develop)를 생성 후 HEAD Pointer 및 Branch Pointer를 각각 develop Branch와 C2(두 번째 commit 객체)를 가리키도록 만든다
HEAD > develop Branch
develop Branch > C2(두 번째 commit 객체)
- 아래 결과와 같이 HEAD Pointer는 delvelop Branch를 develop Branch의 Pointer는 C2(두 번째 commit 객체)를 가리키게 된다.
5. C4(두 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화
- C4(네 번째 commit 객체) 생성 후 HEAD Pointer는 develop Branch를 가리키며, 해당 branch(develop) Pointer는 C4(네 번째 commit 객체)를 가리킨다.
- develop Branch는 C4(네 번째 commit 객체)를 가리키고 있으며, "ls" 명령 후에는 자신만의 Working 영역인
C1 > C2 > C4 파일만을 출력한다.
6. C5(두 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화
- C5(다섯 번째 commit 객체) 생성 후 HEAD Pointer는 develop Branch를 가리키며, 해당 branch(develop) Pointer는 C5(다섯 번째 commit 객체)를 가리킨다.
또한, develop Branch는 C5(다섯 번째 commit 객체)를 가리키고 있으며, "ls" 명령 후에는 자신만의 Working 영역인 C1 > C2 > C4 > C5 파일만을 출력한다.
6. HEAD Pointer 및 Branch Pointer 결과
- 결국 master branch와 develop Branch는 각각 자신만의 Working 영역 안의 파일만을 출력시키게 된다.
master Branch: C1 > C2 > C3
develop Branch: C1 > C2 > C4 > C5
- AJ 님의 "Advanced Git" 슬라이드(참고 슬라이드)