Commits are snapshots, not diffs - The GitHub Blog
The GitHub Blog
git의 commit에 대해 혼동하기 쉬운 개념을 설명한 글입니다. 매우 간단하게 요약하면 아래와 같습니다. - git에 존재하는 모든 객체의 ID(OID)는 hash로 표현됩니다. - git의 구조는 기본적으로 blob과 tree로 이루어져 있습니다. 쉽게 얘기 하면 tree는 디렉토리, blob은 파일입니다. - commit은 특정 시간에 생성한 root tree 아래의 스냅샷입니다. commit은 root tree를 가리키는 pointer와 parent commit 리스트, author/committer/commit message 등의 meta 정보를 갖고 있습니다. - branch는 특정 commit을 가리키는 pointer입니다. git의 다른 요소들은 immutable지만 branch는 변경이 가능합니다. - git diff는 root tree부터 depth-first search(DFS)로 두 개의 commit에서 다른 OID를 가진 객체의 tree만을 traverse해서 실시간으로 생성합니다. 두 commit에서 동일한 tree는 탐색하지 않으므로 diff의 비용은 서로 다른 객체에 도달하는 path의 수에 따라 달라집니다. - cherry-pick, rebase 등은 모두 기준 commit과 부모와의 diff를 실시간으로 계산하여 적용하고 HEAD pointer를 이동시키는 방식으로 이루어집니다. ——— (🚀 채용 광고) '신상마켓'을 운영하는 딜리셔스에서는 동대문 패션 생태계를 기술을 통하여 더 나은 모습으로 디지털화하고 함께 성장하여 글로벌까지 연결하는 꿈을 갖고 있습니다.🚀 이런 분들을 찾고 있습니다. - Java / Ruby Developers - Android / iOS Developers - Web Developers (React.js / Vue.js) - Data Engineers on AWS - DevOps on AWS - Product Managers / Product Designers - Data Analysists - Ad Platform Developers / PMs b2b 뿐만 아니라 b2b2c/글로벌 등 다양한 제품군을 준비 중이고 📱 주도적으로 오너쉽을 갖고, 자율적으로 일하는 환경을 지향합니다 ☺️ 채용 더 알아보기 >> https://www.wanted.co.kr/company/3059
2021년 1월 6일 오전 3:42
snapshot이라기보다도 diff path에 가깝네요