체크아웃되지 않은 원격 저장소의 원격 저장소를 가져오는 방법이 있습니까 git
?
내 원격 PC에 있는 도트 파일은 버전 관리를 받고 있습니다.yadm
). 저장소가 내 로컬 PC에 복제되었습니다(사용됨 yadm
). 하지만 내 로컬 PC에서는 다른 도트 파일 관리 유틸리티(rcm
) 이는 더 큰 유연성을 허용합니다.
과( 와 ) 다른 기반으로 작업했기 yadm
때문에 로컬 컴퓨터에서 작동하는 작업을 시도하기 위해 여러 가지 어려움을 겪어야 했습니다 .rcm
symlinks 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 fetch
refspec
특히 다른 개정판을 가져오는 데 사용할 수 있는 선택적 매개변수가 있습니다 . 다른 지점에 매핑하면 이 작업이 좀 더 쉬워질 수 있습니다.
git fetch origin b
또는 origin/master
commit 을 가리키 므로 as refspec을 b
사용해 origin/master
도 작동합니다.
git fetch origin origin/master
다시 말하지만, 브랜치나 태그를 커밋하면 b
이러한 획득이 더 쉬워질 수 있습니다. 그렇지 않은 경우 커밋의 해시를 수동으로 지정하여 병합을 수행해야 합니다.아니요사용) 표시됩니다 git log --all
.