답변:
기본 리포지토리의 모든 개체를 복제하려면 기본 리포지토리에서이 작업을 수행하십시오.
git push --all <url-of-bare-repo>
또는 Bare Repo 내부에서 가져 오기를 수행하십시오.
git fetch <url-of-main-repo>
풀은와 병합을 원하기 때문에 풀을 수행 할 수 없으며 HEAD베어 리포지토리에는 없습니다.
나중에 리모컨을 추가하여 나중에 입력 할 수 있습니다.
git remote add <whatever-name> <url-of-other-repo>
그러면 간단하게 할 수 있습니다
git push --all <whatever-name>
또는
git fetch <whatever-name>
당신이있어. 만약이 REPO 내용에 따라 <whatever-name>입니다 origin, 당신도 전부를 생략 할 수 있습니다.
면책 조항 : 나는 자식 전문가가 아닙니다. 내가 잘못 말하면 깨달음을 원합니다!
업데이트 : 의견을 읽으십시오!
git-fetch --all베어 리포지토리 내부를 수행 했을 때 주 리포지토리에 대한 업데이트를 보지 못했지만 메인 리포지토리 git push --all <url-of-bare-repo>에서 업데이트를 볼 때의 업데이트가 표시됩니다 git log. 아마도 이것에 대한 간단한 설명이 있습니다-누군가 설명 할 수 있습니까?
git log은 맨발로이 업데이트를 표시하지 않는다는 것을 의미 합니다. ( git log --all맨손으로 리포지토리를 복제하여 생성 된 작업 리포지토리를 통해 git log --all또는 거기에 표시되어야하는 새 파일을 보거나하지 않음). 직접 확인하는 것은 매우 빠른 테스트입니다. 대부분 내가 잃어버린 것이 궁금합니다.
git fetch -q origin master:master로컬 베어 리포지토리 내부에서 수행 할 수 있습니다 . 이것은 github의 마스터 브랜치에서 새로운 것을 가져오고 로컬 마스터 브랜치를 업데이트합니다.
master:master는 HEAD를 원격 리포지토리 로 앞으로 이동시키는 데 필요한 것입니다. 내 경우에는 문제 때문에 git이 없기 때문에 맨손으로 repo에 연결할 수 없습니다. 그것이 해결 될 때까지 나는 역 터널을하고 다음을 사용하여 중앙 저장소로 가져옵니다 git fetch ssh://localhost:8765/... master:master. 매력처럼 작동합니다. 감사!
git fetch origin *:*
다음 명령을 사용하여 리포지토리를 만들었습니다.
git clone --bare <remote_repo>
그런 다음 Thomas의 답변을 사용하여 베어 클론을 업데이트하려고 시도했지만 작동하지 않았습니다. 베어 리포지토리를 업데이트하려면 (Let_Me_Be가 요청한 것으로 생각) 미러 리포지토리를 만들어야했습니다.
git clone --mirror <remote_repo>
그런 다음 미러 리포지토리에서 다음 명령을 실행하여 기본 리포지토리의 업데이트를 가져올 수 있습니다.
git fetch --all
[remote "origin"]섹션을 추가 fetch = +refs/*:refs/*하고mirror = true
로 다시 이외의 유일한 해결책은 git clone --mirror있다 그레고르에서 :
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'
그러면 git fetch업데이트를 볼 수 있습니다. 이상한 점은 전에는 remote구성된 것이 있지만에 나열된 분기가 없다는 것입니다 git branch -a.
git remote update가 작업을 수행 할 수 있도록 합니다.
--force하고 --prune받는 사람 각각 git fetch라인.
가정 :
$ git clone --bare https://github.com/.../foo.git
다음으로 가져 오기 :
$ git --git-dir=foo.git fetch origin +refs/heads/*:refs/heads/* --prune
참고 : 먼저 디렉토리에있는 --git-dir=foo.git경우 필요하지 않습니다 cd.
origin정의되어 있지 않은 경우 언제든지 origin부품을 원래 저장소의 경로 / URL로 바꿀 수 있습니다 . 예 :$ git --git-dir=foo.git fetch https://github.com/.../foo.git +refs/heads/*:refs/heads/*
주위를 많이 어지럽 힌 후 이것이 저에게 효과적이라는 것을 알았습니다.
한번:
git clone --mirror ssh://git@source.address:2000/repo
git remote add remote_site ssh://git@remote_site.address/repo
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'
매번 동기화하고 싶습니다 :
cd /home/myhome/repo.git
git --bare fetch ssh://git@source.address:2000/repo
git fetch ssh://git@source.address:2000/repo
git push --mirror remote_site
git config remote.origin.fetch 'refs/heads/*:refs/heads/*')이 열쇠입니다. 좋은 답변 감사합니다!
git config remote.origin.fetch 'refs/heads/*:refs/heads/*'이 답입니다. 이 명령을 치고 난 후, 그냥 git fetchrepo가 원격 명령 과 동기화됩니다.
Bare 저장소를 원격 저장소로 추가 한 다음을 사용하십시오 git push.
나 에게이 조합은 효과가 있었다.
git remote add remote_site https://github.com/project/repo.git
git fetch -u remote_site +refs/heads/:refs/heads/*
git push --mirror
가져 오기에 대한 -u 매개 변수가 필요했습니다. 그렇지 않으면 "비 베어 리포지토리의 현재 분기 참조 / 헤드 / 마스터로 가져 오기 거부"( https://stackoverflow.com/a/19205680/4807875 참조 ) 오류 메시지가 나타납니다.