우리는 Git을 소개하고자하는 조직에서 바이너리 파일과 관련된 Git 동작과 관련된 문제가 있습니다.
우리 프로젝트에는 바이너리와 텍스트 유형 파일이 잘 혼합되어 있으며 일반적인 크기는 1GB가 될 수 있습니다. 우리의 두려움은 몇 년 후 전체 클론이 너무 커져 성능 및 디스크 공간 문제가 발생한다는 것입니다.
Git으로 마이그레이션 할 환경 중 하나는 SW가 현재 TCM이라는 시스템에 있습니다. 7-10 년 버전의 저장소의 전체 크기는 2TB입니다.
ClearCase의 또 다른 환경은 약 7-8 년 동안 약 1TB의 데이터를 보유합니다.
Git이 특히 바이너리 파일에 영향을 줄 델타에 저장하지 않으면 5 년 이상 지나면 사용자에게 우려가됩니다.
얕은 복제 기능이 이상적이었을 것입니다. 하지만 문서는 이렇게 말합니다. "얕은 저장소는 많은 제한이 있습니다 (복제하거나 가져올 수도없고 가져올 수도없고 가져올 수도 없습니다). 그러나 긴 프로젝트의 최근 기록에만 관심이 있다면 충분합니다. 기록을 수정하고 패치로 수정 사항을 보내고 싶습니다. " 얕은 클론에 대한 간단한 검사는 제대로 작동 함을 보여 주지만 작동하지 않는 사용 사례가 있다는 것을 확실히 알 수 있습니다. 따라서 문서
작동하지 않는 알려진 사용 사례 목록이 있습니까?shallow clone의 한계점
5
A
답변
3
이진 파일을 전용 저장소에 저장하고 쉽게 확장 및 정리가 가능하도록 권장합니다 : Nexus과 같은 이슈 저장소.
다른 대안이있는 "How to handle a large git repository?"이 있습니다.
Git에서 모든 것을 부 자연스러운 방식으로 사용하려고 시도하면 항상 소스 컨트롤 도구 인 더 많은 문제가 발생합니다. 당신은 그것이 좋은 것을 위해 그것을 사용할 수도 있습니다.
즉, 얕은 복제는 밀어 넣기를 지원하지 않습니다 (또는 적어도 위험합니다 : "Why can't I push from a shallow clone?"참조).
읽기 전용이므로 "not understanding git shallow clone"에서 언급 한 것처럼 git archive
이면 충분합니다. 업데이트 2015
:
- 실제로, 당신은 지금 단 한 번의 커밋 가져 오기 (2.5 + 힘내와) 당신이 할 수있는 "Is
git clone --depth 1
(shallow clone) more useful than it makes out?" - 를 참조 당겨/푸시에 대한 얕은 복제를 사용할 수 있습니다. "Pull a specific commit from a remote git repository"을 참조하십시오.
1
Git Annex은 "big-binary-files in/near git"문제를 아주 아름답게 해결합니다.
관련 문제
- 1. 한계점 막대가있는 가장자리
- 2. git clone의 출력
- 3. C++ shallow/deep copy?
- 4. C# Shallow copy 사전?
- 5. 레일 루트 : shallow => true
- 6. Object Shallow Copy in C#
- 7. hg clone의 문제점 srC# tag dest
- 8. 배열의 메소드를 deep 또는 shallow 복사본으로 복제합니까?
- 9. XNA에서 Shallow Water Ripples 효과에 대한 도움이 필요합니다.
- 10. Mercurial Shallow Clone 확장의 상태는 어떻습니까? 얕은 복제 확장의
- 11. 개체가 javascript deep 또는 shallow 복사본의 배열에 푸시 되었습니까?
- 12. 자바의 얕은 복사
- 13. nhibernate에 linq를 사용하여 자식 카운트 순서 실패
- 14. NHibernate에 HQL 일괄 업데이트는 주문 엔티티에 대한 HQL 일괄 업데이트를 수행하려고 할 때, 나는 다음과 같은 예외가 받고 있어요
- 15. Hg의 빈 저장소에 기존 원격 저장소 가져 오기
- 16. 다중 중첩 경로 (Nested Routes), 더 좋은 방법이 있습니까?
- 17. 레일 : 중첩 된 자원이 문제
- 18. 은 해시 테이블의 얕은 복사본을 혼동합니다.
- 19. NHibernate에 Linq를가 된 IQueryable <T>
- 20. 쿼리에 대한 NHibernate 예외
- 21. Linq to Nhibernate - 내부 메서드 호출 나누기 선택 IQueryable
- 22. NHibernate, 리플렉션을 통해 열을 사용하여 작업하기
- 23. 깊은 사본
- 24. 브라우저 GPU 가속을 프로그래밍 방식으로 테스트 할 수 있습니까?
- 25. git clone --reference 후에 대체 방법을 분리하는 방법?
- 26. git uncheckout이 있습니까?
- 27. 어떻게하면 git 웹 인터페이스에서 가져온 git "스냅 샷"을 추출합니까?
- 28. linq-to-Nhibernate에서 여러 조건으로 join을 사용하는 방법
- 29. Linq는 쿼리
- 30. 동적 바인딩과 깊은
업데이트 : git V1.9부터 얕은 복제본의 대부분의 제한 사항이 해결되었습니다. – sleske
Git 2.5 (Q2 2015)는 단일 페치 커밋을 지원합니다! 나는 아래에서 나의 대답을 편집했다. "[git 원격 저장소 (remote git repository)에서 특정 커밋을 가져 오기] (http://stackoverflow.com/a/30701724/6309)"를 참조하십시오. – VonC
VTC가 명확하지 않습니다. 문서는 할 수없는 일에 대한 전체 요약을 제공합니다. "유스 케이스 목록"은 이러한 작업을 사용하는 것으로 상상할 수있는 모든 것입니다. 어느 것이 무한 집합이므로 대답을 할 수 없습니다. –