git“스냅 샷”이란 무엇입니까?
공식 Git 문서 는 다음과 같이 말합니다.
$ git diff test
이것은 현재 작업 디렉토리와 'test'브랜치의 스냅 샷의 차이점을 보여줍니다.
초보자로서 이것은 매우 혼란 스럽습니다. 스냅 샷이라는 용어는 들어 본 적이 없습니다. "테스트"분기의 "HEAD"를 의미합니까?
스냅 샷은 특정 시점의 상태 (예 : 폴더)입니다. 이 경우 스냅 샷은 테스트 분기의 현재 콘텐츠를 의미하며 헤드 개정일 필요는 없습니다.
스냅 샷이라는 용어는 git 참조 사이트에서도 사용됩니다.
"개정"을 대체하는 용어입니다. 다른 버전 제어 시스템에서는 개별 파일의 변경 사항이 추적되고 개정판으로 참조되지만 git에서는 전체 작업 공간을 추적하므로 스냅 샷이라는 용어를 사용하여 차이점을 나타냅니다.
에서 http://gitref.org/index.html
Subversion과 같이 각 파일을 개별적으로 버전 화하는 도구를 작성하는 대신 매번 전체 디렉토리를 복사 할 필요없이 프로젝트의 스냅 샷을 더 쉽게 저장할 수있는 도구를 작성할 것입니다.
이것이 본질적으로 Git입니다. Git에 git commit 명령을 사용하여 프로젝트의 스냅 샷을 저장하고 싶다고 말하면 기본적으로 해당 시점에서 프로젝트의 모든 파일이 어떻게 보이는지에 대한 매니페스트를 기록합니다. 그런 다음 대부분의 명령은 해당 매니페스트와 함께 작동하여 어떻게 다른지 확인하거나 콘텐츠를 가져옵니다.
Git을 프로젝트의 스냅 샷을 저장하고 비교하고 병합하는 도구로 생각한다면 무슨 일이 일어나고 있는지, 그리고 어떻게 일을 제대로 수행하는지 이해하는 것이 더 쉬울 것입니다.
용어 스냅 샷을 설명하기 위해 명확합니다. 다른 두 가지를 소개하겠습니다.
- git loose 객체 형식
- git Packfiles
"a.txt"라는 파일이 있다고 가정합니다. 그 내용은 git 제어하에 10 개의 'a'문자입니다. 이 파일을 커밋하면 .git / objects 경로 아래에 세 개의 폴더가 생성되고 각 폴더에는 하나의 파일이 있습니다. 각 파일은 SNAPSHOT 입니다.
각 폴더에는 하나의 파일이 있습니다.
이제 a.txt 파일을 편집하여 어떤 일이 발생하는지 확인합니다.
첫 번째 문자 'a'를 문자 'b'로 변경했습니다.
그런 다음 헌신했습니다!
Git은 세 개의 새 floder 아래에 다른 세 개의 새 파일을 만들었습니다.
이 세 개의 새 파일은 SNAPSHOT입니다.
Every time we do COMMIT,git will save snapshots to disk instead of the delta between the new version to old version of the same file.Even if we just changed one letter of one file ,git will save whole file as snapshot.
This also called the loose object format.
In this case , git will coast more disk space than the other vcs(such as subversion).
But the brilliant git will do another job (git gc) after this from time to time which created PACKFILES and remove the snapchat which contents are similar to shrink the size of itself.
The packfiles is under .git/objects/pack
You can see it after execute "git gc" command by yourself.
Snapshot is to a repository as screenshot is to a video.
Its a content (files and folders) of a repository at some point in time, a state of a repository, if you will.
That content is represented by Git's Tree Object and stored in the .git
folder. When you commit
, you store your repository's current working directory as a new repository's snapshot. Your Git repository consists of series of snapshots, other VCS consists of series of diffs instead.
Firstly, that's not the official git documentation. It's a community-authored book. While it is probably fairly authoritative, it isn't gospel.
AFAIK, "snapshot" doesn't have any formal meaning in git. Certainly the git diff manpage doesn't mention it. In the given context, it is probably an informal reference to how the "test" branch is being used in the examples within the book, i.e., as a snapshot of ongoing work, for testing purposes.
My understanding is that a snapshot in general is just the "entity" that git uses to store its data. As opposed to storing its data as a series of "deltas" / changesets like SVN does, for example, each commit that you do to git creates a "commit object" that references a snapshot of what the code looked like at that point in time.
So as @Femaref says, it is the state of the code at a specific time and does not necessarily mean it is the head of the test branch but could be in the example you saw.
Based on the other definitions posted:
A snapshot is a representation of the current state of your tracked files in the form of a manifest, which can be compared with other manifests to see where the differences are.
Git only tracks the differences between manifests from the first moment it was tracked. If a file has not been changed since the very first snapshot, all subsequent snapshots will refer to the very first snapshot. If the file has been changed, all subsequent snapshots will refer to the snapshot that has the most recent changes. What git stores is effectively a chained history of snapshots from the last to the very first. A branch is basically a split in the timeline, allowing for an alternate historical chain of snapshots from a specific snapshot on the main chain.
분기는 일반적으로 기능을위한 것이며 어느 시점에서 주 분기로 병합 될 수 있습니다. 의도 된 병합이 아니라 원래 프로젝트에서 자체 역사가있는 새롭고 완전히 분리 된 프로젝트 사본의 형태로 차이가 나는 경우 "길 위의 포크"를 지칭하는 하드 포크라고합니다.
다음은 스냅 샷 이라는 용어 가 사용되는 몇 가지 컨텍스트입니다 .
- 인덱스의 스냅 샷을 생성하여 새 커밋을 만듭니다.
- 커밋은 주어진 시간에 저장소의 스냅 샷입니다.
참고 URL : https://stackoverflow.com/questions/4964099/what-is-a-git-snapshot
'programing tip' 카테고리의 다른 글
Internet Explorer는 CSS 전환을 지원합니까? (0) | 2020.11.26 |
---|---|
"em"을 사용한 글꼴 크기 조정은 여전히 관련이 있습니까? (0) | 2020.11.25 |
자바에서 'instanceof'피하기 (0) | 2020.11.25 |
python argh / argparse : 목록을 명령 줄 인수로 전달하려면 어떻게해야합니까? (0) | 2020.11.25 |
웹 API 및 ValidateAntiForgeryToken (0) | 2020.11.25 |