2013-10-26 4 views
2

나는 새로운 자식이다.git에서 나무를 복제하기

git에서 프로젝트의 히스토리 부분을 실수로 삭제했습니다. 이제는 머리를 최신 안정 릴리스로 설정하려고합니다. 문제는 내가 HEAD를 명령에서 액세스 할 수 없도록 설정하려는 트리이지만 브라우저를 통해 액세스 할 수 있습니다.

누구나 SHA를 사용하여 특정 트리를 복제하는 방법을 알고 있습니까?

내가 SHA를 재설정하려고했으나 SHA가 인식되지 않습니다. git clone -b SHA repo.git도 시도했지만 작동하지 않았습니다.

+0

어떻게 "역사의 일부"를 제거 했습니까? – michas

+0

서버와 로컬 저장소 이외에 저장소의 다른 사본이 있습니까? (예 : 이전에 누군가 다른 사람이 복제 했습니까?) – michas

+0

저장소가 하위 모듈을 사용합니까? ('.gitmodules' 파일이 있습니까?) – michas

답변

3

"최신 안정 릴리스"가 이미 서버에 푸시 되었습니까? 예인 경우 git fetchgit checkout SHA을 실행할 수 있습니다.

이 커밋이 로컬 기록에만있는 경우 git reflog을 실행하고 커밋을 식별하십시오. 그런 다음 원하는 커밋을 체크 아웃하십시오.

5

다른 개념을 혼합했습니다.

복제 할 때마다 전체 저장소을 복제합니다. (특정 "트리"를 복제 할 수있는 방법이 없습니다.)

리포지토리는 주로 많은 수의 커밋으로 구성됩니다. 그것들은 당신이 계산할 수있는 것들입니다. 각 커밋은 상위 커밋을 알고 있습니다.이 경우 내역 트리이됩니다.

커밋 자체에는 모든 파일이 포함 된 트리 디렉터리가 포함되어 있습니다.


일반적으로 "중앙"저장소를 호스팅하는 서버가 있습니다.

먼저 저장소를 복제합니다. 이렇게하면 호스트에 해당 중앙 저장소의 전체 복사본이 만들어집니다. (모든 가지와 커밋 포함)

이후에는 대개 로컬 저장소 만 사용합니다.


오류 메시지 (불행히도 일부 의견에서만 숨김)에서 프로젝트가 서브 모듈을 사용하는 것처럼 보입니다. (프로젝트에 완전히 다른 저장소를 포함시키는 방법)

이것은 약간 까다로운 경향이 있습니다. http://git-scm.com/book/en/Git-Tools-Submodules을 살펴보십시오.