자식에서 분기를 변경할 때 파일은 어떻게 대체됩니까?


7

분기를 변경할 때 git이 파일을 관리하는 방법에 대해 이해하지 못하는 것이 있습니다.

내가 달릴 때

git branch xxx

기존 실제 파일은 어떻게됩니까? 그들은 움직이고 있습니까? 삭제 했습니까? DB에 저장되어 있습니까? 자식은 파일 시스템 마술을 포함합니까?


2
git의 저수준 마법에 대해 배우고 싶다면 "Git을 처음
끝까지

답변:


12

을 실행 git branch xxx하면 Git 은 새 브랜치를 생성 하지만 실제로는 브랜치로 전환하지는 않습니다. 작업 트리는 전혀 수정되지 않습니다. (새 브랜치는 이전 브랜치와 정확히 동일한 파일과 히스토리를 갖습니다.)

git checkout xxx분기를 전환하기 위해 실행할 때 새 분기의 파일은 "객체 데이터베이스" 에서 추출됩니다. 이 아카이브는 보관 된 .git/objects/모든 커밋에서 모든 파일의 압축 된 원본을 포함합니다. (또한 커밋 자체가 저장되는 위치입니다.)

기존 브랜치에 속하지만 새 브랜치에없는 파일은 단순히 삭제됩니다 (이미 오브젝트 저장소에 이미 존재하므로 Git은 다시 전환하면 다시 추출 할 수 있습니다).

브랜치간에 일부 파일이 동일 git checkout할 경우 삭제하지 않고 전혀 추출하지 마십시오. 이렇게하면 커밋되지 않은 변경 사항이 체크 아웃 동안 유지 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.