2016-12-20 2 views
1

누락 된 커밋을 모두 가져 오지 않고 원격 커밋을 가져올 수 있습니까?작은 일괄 처리로 Git 커밋을 가져 오는 방법

배포 시간을 단축하기 위해 다른 리포지토리에 대한 참조로 사용되는 리포지토리가 내 컴퓨터에 있습니다. 불행히도, 나는 그것을 잠시 동안 업데이트하지 않았고 원격 저장소와 동기화되지 않았습니다. GitHub는 대단히 느리고 (40-50kbps) 약 150MB를 다운로드 할 수 있습니다. Git이 81 %에서 다운로드를 중단하면 이것은 재미가 적습니다 ....

가져올 커밋 수를 줄일 수있는 방법이 있습니까? --depth 인수를 사용하려고 생각했지만 얕은 Git 저장소가 없으므로이를 하나가되고 싶지 않습니다. 또한 --depth은이 날짜부터이 날짜까지 가져 오는 커밋으로 작동하지 않습니다 (좋을 수도 있음). 가능한 한 매일 커밋을 가져올 수 있습니다.

가져 오기가 실패하면 가져 오기를 시작하기 전에 원래 위치에서 다시 시작해야합니다. 작은 덩어리를 가져올 수 있기를 원합니다. 실패하면 150mb를 몇 번이라도 저속으로 다운로드 할 필요가 없습니다.

+0

다운로드 속도가 더 빠른 곳에서 복제 한 다음 천천히 연결된 컴퓨터로 다른 방법으로 옮기는 방법은 어떨까요? – Vampire

+0

인터넷 연결이 빠릅니다. 나는 약 20mbit가있다. 150MB를 다운로드하는 데 몇 초가 걸립니다. 그것은 때때로 "지옥처럼 느리다"는 몇 가지 이유로 github입니다. –

+1

아, 그래, 아마도 프로토콜을 바꿀 수 있을까? https <-> ssh <-> git – Vampire

답변

1

@Vampire's suggestion 가능한 경우 전환 프로토콜을 시도하십시오. 나는 Git 데이터를 전송할 때 SSH가 HTTPS보다 훨씬 더 안정적이라는 것을 발견했다.

AFAIK, 원격 저장소에 커밋을 나열 할 수 없습니다 (특정 분기에 대해서만 최신 SHA를 얻을 수 있음). (말하자면 경우에, 난 그냥 my answer to "How to set a maximum commit count on git push"을 수정 한 것입니다.) 그러나, 당신이 함께 편리한 SHA, you can specify the commit to download 커밋이있는 경우 : (.이 그 커밋을 가리 키도록 origin/master 추적 브랜치를 업데이트합니다)

git fetch origin 96de5297df870:refs/remotes/origin/master 

코드가 GitHub에서 호스팅되므로 GitHub의 로그를 검사하고 최신 상태가 될 때까지 특정 커밋을 가져 오는 것이 좋습니다. 또한 한 번에 한 세트의 커밋을 가져 오는 대신, bisect은 한 번에 얼마나 많은 수를 다운로드 할 수 있는지 확인하는 커밋을 제안합니다.

+1

그건 꽤 흥미 롭습니다. 이미 거의 모든 것을 이미 동기화했기 때문에 오늘은 테스트 할 수 없습니다. 한 가지 질문은 내 저장소에없는 소유권 커밋을 다운로드하지 않을 것이라고 생각합니다. 엄밀히 말하면, 커밋을 가져 오는 것은 내가 체리 선택을하지 않는 한 아무 쓸모가 없다. 또한 부모 커밋을 가져 오는 경우 github API를 사용하여 가져올 커밋 목록을 만들 수도 있습니다. –