2013-06-10 1 views
2

방법 자식 저장소 노트 : 단일 네임 스페이스에 대해 커밋 당부모가 git notes에 저장되는 이유는 무엇입니까?

  • 망할 놈의 하나 개의 메모를 저장할 수 있습니다. 하나는 여러 개의 네임 스페이스를 가질 수 있습니다. 기본 네임 스페이스는 커밋입니다.
  • .git/심판/노트/트리 개체 하나 해시 (예를 들어, MainHash_2)를 포함한다. 메모를 만들 때마다 해시가 변경됩니다.
  • 이 나무 개체
  • 은 두 개 더 해시를 포함한다. 하나의 트리 구조 (노트 트리 구조, 예 : NOTES_2)와 하나의 부모 트리 오브젝트 (이 노트를 작성하기 전에 .git/refs/notes /에있는 것)는 MainHash_1입니다.
  • 노트 트리 구조에는 각 메모에 대한 항목입니다. 각 엔트리에는 2 개의 해시가 있습니다. 하나는 내용을 나타내고 다른 하나는 지정된 커밋입니다. 제 점에서 언급했듯이

이유는 부모가 저장된다? 이 부모 (유형은 2 번에서 언급 한 것과 동일 함)는 메모 당 하나의 항목을 포함하는 다른 트리를 포함합니다.

가정은 현재 세 가지 사항이있다. MainHash_2에는 NOTES_2의 해시가 포함되어 있으며 각 메모마다 세 개의 항목이 들어 있습니다. MainHash_1에는 두 개의 항목이 포함 된 NOTES_1의 해시가 포함됩니다 (지금 생성 된 메모 제외한 나머지 모든 메모). 두 항목을 두 번 저장하는 이유는 무엇입니까 ??

답변

2

노트 네임 스페이스가 자식에 뭔가 특별한하지 간단하기 때문에, 그들은 완전한 역사를 가진 단지 일반 지점입니다. 당신은

git checkout notes/commits 

을하고 다른 지점, 예와 마찬가지로 노트로 작업 할 수 있습니다 당신은

git log notes/commits 

이 노트에 대한 로그를 커밋 확인 할 수 있습니다. 이렇게하면 메모에 대한 모든 변경 사항을 추적 할 수 있습니다.

.git/refs/notes/commits나무 객체 하나 해시 (예를 들어, MainHash_2)를 포함

당신은 말했다.

그것은 나무 목적이 아니다, 그것은 을 커밋합니다. .git/refs/heads/master과 같습니다. 부모가 저장되는 이유가 가지 이잖아 때문에 당신은 git cat-file -t <hash>

+0

으로 확인할 수 있으며 중복 정보 또는 우리가 정말 어떤 시나리오에서 부모를 필요로 하는가? –

+2

@knoxxs 먼저 메모 기록을 확인하고 싶을 수 있습니다. 메모는 변경 가능하므로 수정 기록을 유지하는 것이 좋습니다. 두 번째로, 그것은 git이 작동하는 방법입니다. notes는 기존의 git 기반 구조를 사용하는 추가 기능입니다. – kirelagin

관련 문제