2012-07-04 3 views
2

로컬 git 저장소가 있습니다. 디스크 공간을 절약하기 위해 하드 링크 된 파일로 로컬 시스템에서 복제하려고합니다. 내가 어떻게 해?git clone 하드 링크로 로컬 저장소를 복제하는 방법은 무엇입니까?

+1

이것은 완전히 git의 요점을 부정하지 않습니까? 하드 링크를 사용하면 복제본을 편집하는 대신 마스터 분기의 파일을 편집하게됩니다. – Polynomial

+0

'git help clone'을 읽었습니까? 이것이 실제로 기본 동작입니다. –

+0

물론 가능했다.)하지만 git clone -l do '가능한 한 공간을 절약하기 위해 .git/objects/디렉토리에있는 파일을 하드 링크합니다.' . 하지만 모든 파일을 하드 링크해야합니다. – Nikita

답변

8

힘내 저장소, 단순화하여 만든 파일의 삼가지 :

  1. 데이터베이스와 같은 객체 ($GIT_DIR/objects) : 이러한 객체는 수정되지 않습니다, 일부를 추가 할 수 있습니다 , 일부는 제거 할 수 있지만 파일은 절대로 수정되지 않습니다. 이는 많은 클론간에 정확히 동일 할 수 있음을 의미합니다.

  2. 저장소 별 구성 및 상태 ($GIT_DIR는) :이 파일 저장소 (예를 들어 $GIT_DIR/info/*)에 특정 구성이 포함되어 있습니다. 또한 알려진 분기, 체크 아웃 된 분기 등 저장소 상태를 저장합니다. 저장소간에 공유 할 수 없거나 디자인에 대해 공유 할 수 없습니다.

  3. 작업 복사본 파일 , 또는 소스 :이 파일은 대부분 소스 코드 시간이므로 저장소마다 다릅니다. 그들은 유연하고 많이 변합니다 (많은 코드를 작성했거나 분기를 많이 전환했거나 둘 다 변경했기 때문에). 사실

, 유일한 비 변경은하지 저장소 특정 파일은 객체 파일입니다. 그리고 이것들은 가능한 경우 Git에 의해 자동으로 하드 링크됩니다 (심지어 -l을 지정하지 않아도).

동일한 드라이브에 두 개의 리포지토리가 동일한 상태와 파일을 갖도록하려면 심볼릭 링크를 만들어야합니다. 하지만 구성이 바뀌고 복사 파일이 너무 많이 변경되고 저장소에만 한정되어 있기 때문에 하드 링크 할 수 없습니다.

관련 문제