Git에서 체크아웃되지 않은 원격 저장소의 원격 저장소를 가져오는 방법

Git에서 체크아웃되지 않은 원격 저장소의 원격 저장소를 가져오는 방법

체크아웃되지 않은 원격 저장소의 원격 저장소를 가져오는 방법이 있습니까 git?

내 원격 PC에 있는 도트 파일은 버전 관리를 받고 있습니다.yadm). 저장소가 내 로컬 PC에 복제되었습니다(사용됨 yadm). 하지만 내 로컬 PC에서는 다른 도트 파일 관리 유틸리티(rcm) 이는 더 큰 유연성을 허용합니다.

과( 와 ) 다른 기반으로 작업했기 yadm때문에 로컬 컴퓨터에서 작동하는 작업을 시도하기 위해 여러 가지 어려움을 겪어야 했습니다 .rcmsymlinks to ~bare git into ~yadm

  • 현재 심볼릭 링크 포인트 파일 연결 해제rcm
  • 체크아웃 yadm- 저장소

이 작업을 취소하려면 다음을 수행해야 합니다.

  • yadm저장소 체크아웃 시 복제된 모든 파일 삭제
  • 심볼릭 링크 파일rcm

이것은 매우 성가신 일입니다. 그래서 내 저장소의 로컬 복제본을 yadm다른 폴더에 복제했습니다 . yadm로컬 마스터 리포지토리에서는 모든 원격 항목을 볼 수 있지만 HEAD복제된 yadm리포지토리에서만 가져올 수 있습니다.

다음과 같습니다.

remote PC (1):                    commit a (old, not checked out), commit b (HEAD -> master)
local  PC - main repository (2):  commit a (HEAD -> master), commit b (origin/master, not checked out)
local  PC - other repository (3): commit a (HEAD -> master), commit a origin/master

따라서 내 저장소에서는 3커밋 a(저장소에서 체크아웃됨 2)만 볼 수 있고 커밋 b(저장소에서 체크아웃되지 2는 ​​않았지만 거기에서 사용할 수 있어야 함)은 볼 수 없습니다. 지금 내 질문은: 내 저장소에서 어떻게 커밋 b를 얻을 수 3있으며 왜 모든 것이 작동하지 않습니까 git fetch?


업데이트 1: 텍스트를 약간 편집하면 (희망적으로) 질문이 더 명확해졌습니다.

답변1

모든 저장소는 베어 저장소가 아니기 때문에 적어도 중요한 곳에서는 그렇지 않습니다. 따라서 기본 동작은 관찰된 것으로 보입니다. 즉, 저장소 3은 저장소 2의 체크아웃 커밋만 볼 수 있다는 것입니다.

이 동작을 재정의하려면git fetchrefspec특히 다른 개정판을 가져오는 데 사용할 수 있는 선택적 매개변수가 있습니다 . 다른 지점에 매핑하면 이 작업이 좀 더 쉬워질 수 있습니다.

git fetch origin b

또는 origin/mastercommit 을 가리키 므로 as refspec을 b사용해 origin/master도 작동합니다.

git fetch origin origin/master

다시 말하지만, 브랜치나 태그를 커밋하면 b이러한 획득이 더 쉬워질 수 있습니다. 그렇지 않은 경우 커밋의 해시를 수동으로 지정하여 병합을 수행해야 합니다.아니요사용) 표시됩니다 git log --all.

관련 정보