AJ 님의 "Advanced Git" 슬라이드 Study - 2





Git HEAD Pointer 및 Branch Pointer 설명




1. Git 명령의 대부분은 File 보다는 Commit 객체를 다룬다.

2. Git 에서의 HEADBranchPointer임을 기억하자.








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(masterPointerC2(두 번째 commit 객체)를 가리킨다.







3. C3(두 번째 commit 객체) 생성 후 HEAD Pointer 및 Branch Pointer의 변화



C3(세 번째 commit 객체) 생성 후 HEAD Pointer는 기존 master Branch를 가리키며, 해당 branch(masterPointer는 C3( 번째 commit 객체)를 가리킨다.







4. 새로운 Branch(develop)를 생성 후 HEAD PointerBranch Pointer를 각각 develop Branch와 C2(두 번째 commit 객체)를 가리키도록 만든다




HEAD > develop Branch

develop Branch > C2(두 번째 commit 객체)




- 현재 develop BranchC3(세 번째 commit 객체)를 가리키고 있으며, "git reset --hard HEAD~" 명령을 통해 마지막 commit 객체인 C3(세 번째 commit 객체) Reset시켜 develop Branch가 다시 C2(두 번째 commit 객체)를 가리키도록 만든다.(해당 Branch의 commit History를 조작한다.)




- 아래 결과와 같이 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 BranchC1 > C2 > C3

develop BranchC1 > C2 > C4 > C5








AJ 님의 "Advanced Git" 슬라이드(참고 슬라이드)