이러한 주제에 대한 몇 가지 좋은 참고 자료 :
색인을 검사 점 으로 사용합니다 .
내가 엉망이 될 수있는 변화를 만들려고 할 때 — 어떤 방향으로 탐색 할 수 있는지 또는 개념적으로 까다로운 리팩토링이나 표현 유형 — 작업을 색인에 체크 포인트합니다. 이것이 마지막 커밋 이후 처음으로 변경 한 경우 로컬 리포지토리를 검사 점으로 사용할 수 있지만 종종 작은 단계 집합으로 구현하는 개념적 변경 사항이 있습니다. 각 단계 후에 체크 포인트를 만들고 싶지만 테스트되고 작동하는 코드로 돌아갈 때까지 커밋을 저장하십시오.
노트:
작업 영역 (소스)의 디렉토리 트리 당신이 확인하고 수정할 수 있음을 파일.
인덱스 에 하나의 큰, 이진 파일입니다 <baseOfRepo>/.git/index
현재의 모든 지점에있는 파일들이 나열, SHA1의 체크섬, 타임 스탬프 및 파일 이름을 - 그것의 파일의 사본을 다른 디렉토리가 아니다.
로컬 저장소는 숨겨진 디렉토리입니다 ( .git
포함) objects
압축 "덩어리"파일과의 repo에있는 모든 파일의 모든 버전 (현지 지사 및 원격 지점의 사본)을 포함하는 디렉토리.
위 이미지에 표시된 4 개의 '디스크'를 별도의 repo 파일 사본으로 생각하지 마십시오.
기본적으로 Git 커밋에 대한 참조입니다. 심판에는 태그와 헤드라는 두 가지 주요 유형이 있습니다.
- 태그는 기록에서 특정 지점을 표시하는 고정 참조입니다 (예 : v2.6.29).
- 반대로, 헤드는 항상 프로젝트 개발의 현재 위치를 반영하도록 움직입니다.
(참고 : Timo Huovinen이 언급 한 것처럼 화살표는 커밋이 가리키는 것이 아니며 워크 플로우 순서입니다 . 기본적으로 화살표 는 첫 번째 커밋 위치와 마지막 위치 로 화살표를 표시 합니다)1 -> 2 -> 3 -> 4
1
4
이제 우리는 프로젝트에서 무슨 일이 일어나고 있는지 알고 있습니다.
그러나 여기서 무슨 일이 일어나고 있는지 알기 위해 지금 HEAD라는 특별한 참조가 있습니다. 두 가지 주요 목적을 제공합니다.
- 체크 아웃 할 때 파일을 가져갈 커밋을 Git에 알려줍니다.
- 커밋 할 때 Git에게 새로운 커밋을 넣을 위치를 알려줍니다.
당신이 git checkout ref
그것을 실행할 때 당신 HEAD
이 지정한 심판을 가리키고 그것에서 파일을 추출합니다. 실행 git commit
하면 새로운 commit 객체가 생성되어 current의 자식이 HEAD
됩니다. 일반적으로 HEAD
헤드 중 하나를 가리 키므로 모든 것이 잘 작동합니다.
HEAD
현재 브랜치 끝에있는 커밋입니다. 브랜치를 체크 아웃 한 경우 (예 : 수정 된 파일이없는 경우) 해당 컨텐츠는 작업 트리와 일치합니다. 아무것도 수정하면 더 이상 일치하지 않습니다.