2011-07-28 4 views
9

질문을하는 방법을 잘 모르겠습니다. 명확하지 않은 경우 사과드립니다. 너 git clone에 매달려있는 물건이 잔뜩 담긴 레포라면 그걸 복제 할 수 있니? 그 반대의 경우도 마찬가지입니다. git gc을 수행하여 다른 사람에게 푸시했다면, git gc이 정리했을 것입니다.git clone/push/pull 미러가 repos의 정확한 내용을 포함하고 있습니까?

나는 이들 중 어느 것도 발생하지 않을 것이라고 추측하지만,이 시나리오에서는 어떤 문서도 찾을 수 없습니다.

대부분의 프로토콜이 일 때 깨끗한 레포를 제공한다는 것을 나타내는 것으로 보이는 some information이지만 파일 경로를 사용하여 파일을 지정하면 모든 것을 복사합니다.

The main reason to specify the file:// prefix is if you want a clean copy of the 
repository with extraneous references or objects left out. 

답변

5

자식 복제는 매달려있는 개체를 복제하지 않습니다.

그리고 푸시 할 때 원격 리포에 아무런 영향을 미치지 않습니다. 밀어 넣기가 수행되지 않고 원격에서 git gc이 제거되면 원격 리포를 제거 할 수 있습니다.

는 않는 ....

이합니다 (또는 --shared-s 플래그로 지정) 공유 로컬 복제 또는 복제 (또는 --local-l)을 하였다. 워드 프로세서에서 :

로컬 컴퓨터에에서 저장소를 복제하는

-l이 플래그 은 사본을함으로써 정상적인 "자식 인식"전송 메커니즘 및 복제합니다 저장소를 우회 HEAD 및 객체 아래의 모든 항목 및 은 디렉토리를 참조합니다. 가능한 경우 .git/objects/디렉토리 아래의 파일은 공간을 절약하기 위해 하드 링크 된 입니다. 소스 저장소가/path/to/repo 구문으로 지정된 경우 기본값이 이므로 기본적으로 no-op 옵션입니다. 하드 링크 대신 강제로 복사하려면 ( 저장소의 백업을 만들려고하는 경우 바람직 할 수 있지만) 일반적인 "git aware"전송 메커니즘을 피하십시오. --no-hardlinks를 사용할 수 있습니다. 복제 할 수있는 저장소가 로컬 컴퓨터에있는 경우

는 하드 링크 소스 저장소로 자동 설정 .git/객체/정보/ 공유에 번갈아 개체를 사용하는 대신 의,

을 -s. 결과 저장소 은 자체 오브젝트없이 시작됩니다.

참고 :이 작업은 위험 할 수 있습니다. 을 이해하지 않으면 사용하지 마십시오. 이 옵션과 옵션을 사용하여 저장소를 복제 한 다음 분기를 삭제하거나 소스 저장소에서 이 존재하지 않는 다른 git 명령을 사용하면 일부 객체가 참조되지 않게되거나 매달릴 수 있습니다. 이러한 객체는 일 수 있습니다. git commit과 같이 이 자동으로 git gc --auto을 호출합니다.

따라서 git clone /path/to/repo을 수행하면 개체가 복사되거나 하드 링크가 만들어 지므로이 경우에는 매달린 개체가 생성됩니다. 다른 경우에는 (git 프로토콜, ssh, 파일 프로토콜 등을 사용하여) 복제물에 매달려있는 객체를 결코 얻을 수 없습니다.

는 전송이 발생 방법은 여기를 봐 - http://progit.org/book/ch9-6.html

+0

'자식은 원격 서버에서 개체를 매달려 끌어 pull' 것인가? – Andy

+0

@Andy - 여기보세요 - http://progit.org/book/ch9-6.html – manojlds

+0

감사합니다. manojlds, 어제 밤 조금 읽었습니다. – Andy

관련 문제