그는, 그는 특정를 참조 할 때 (해시로 식별) 커밋 사실을 언급했다 힘내 파일이 손상되지 보장했다 때 리누스가 무엇을 의미
, 당신이 보장 것을 항상 을 것이다은 정확히 동일한 저장소 상태를 나타냅니다. Linus의 나무에서 리눅스 커널을 가져 오면 그는 ae6bcd1을 참조하고, 로컬 저장소에서도 (심지어 로컬 저장소에서도) ae6bcd1을 수행 할 수있는 것이 아무것도 없다. 리누스는 그가 그것을 언급 할 때 그것을보고 있습니다.
또한 커밋 개체는 상위 커밋 (모든)에 대한 참조를 포함하므로 커밋을 참조 할 때 DAG에서도 전체 기록을 보장합니다.
까지 파일 손상, 일종의 독립적 인 문제; 작업 트리 파일 중 하나가 손상되면 실제 BLOB 객체 (예 : .git/objects/ob/ject_hashname)가 손상되지 않고 이전 커밋 상태 또는 색인/캐시 상태에서 복원 할 수 있습니다.
강제 푸시 (리모컨의 기록을 덮어 씁니다)를하지 않는 한이 경우 리모컨을 손상시킬 수 없습니다. 푸시는 커밋 개체가 지속적인 기록 그래프를 형성하도록 보장하기 때문입니다.
for gitdir in $(sudo find/-name ".git" -type d -printf "%h "); do
cd $gitdir && (git fsck && echo "${gitdir} - "'HAPPY !') \
|| echo "${gitdir} - "'ERROR !';
done
무엇 원격으로 밀어하려고하면 어떻게됩니까 : –
리모컨으로 밀어 넣으면 모든 파일이 함께 정리되고받는 사람 (푸시 할 곳)은 모든 파일의 SHA1을 다시 계산해야합니다. 따라서 파일이 어떻게 든 손상된 경우 트리의 개체 ID가 일치하지 않아 손상이 표시됩니다. 이전에 있던 위치로 언제든지 롤백하고 git fsck를 사용하여 문제를 찾을 수 있습니다 . – araqnid
마지막으로, 오브젝트 파일은 불변이므로 일단 작성되면 내용이 변경되지 않습니다. 발생하는 유일한 작업은 재 포장이므로, 이미 가지고있는 파일의 다른 사본을 작성하지 않으므로 밀어 넣기로 원격을 손상시킬 수 없습니다. –