git clone --mirror를 업데이트하는 방법?


144

라이브 사이트 (비 베어 git 저장소)를 미러링하기 위해 git 저장소를 만들었습니다.

git clone --mirror ssh://user@example.com/path/to/repo

이제이 미러 클론을 원격 원점의 모든 변경 사항으로 업데이트하려면 어떤 명령을 사용해야합니까?

커밋, 심판, 후크, 분기 등 모든 것을 최신 상태로 유지하고 싶습니다.

감사!

답변:


213

이것은 미러에서 실행해야하는 명령입니다.

git remote update

@ Magnus Skog : 훌륭합니다. 감사! 이게 다야? 같은 다른 명령이 필요 git fetch합니까? 아니면 git remote update혼자서 다할까요?
J. Bruni

11
git fetch와의 차이점이 무엇인지 알고 싶습니다.
Thorbjørn Ravn Andersen

1
@ Thorbjörn (스웨덴어와 관련이 있습니다 :) : Git fetch는 원격의 원격 참조로 저장소를 업데이트합니다. 이 명령 은 미러 된 저장소의 모든 것을 업데이트 합니다.
ralphtheninja

4
자세한 설명은 다음과 같습니다. stackoverflow.com/questions/3959924/…
ralphtheninja

16
'git remote update --prune'은이 모든 것을 수행하지만 원래 저장소에서 제거되면 분기를 제거합니다.
teeks99

8

커밋, 심판, 브랜치 및 " et cetera " 와 관련하여 Magnus 답변은 작동합니다 (git remote update ).

그러나 불행히도 후크clone/ 미러 / 후크하는 방법은 없습니다update 내가 원한 것처럼 ...

후크 복제 / 미러링에 대한이 흥미로운 스레드를 발견했습니다.

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

나는 배웠다:

  • 후크는 저장소 내용의 일부로 간주되지 않습니다.

  • .git/description폴더와 같이 후크처럼 복제되지 않는 더 많은 데이터가 있습니다 .

  • hooks디렉토리에 나타나는 기본 후크 는TEMPLATE_DIR

  • template자식 에이 흥미로운 기능 이 있습니다 .

따라서 저는이 "복제 고리 (clone the hooks thing)"를 무시하거나 rsync내 거울의 목적에 따라 전략을 시도 할 수 있습니다 (다른 클론의 백업 + 소스 만 해당).

글쎄 ... 난 그냥 후크 복제를 잊고 git remote update길을 고수합니다 .

  • Sehe는 "후크"가 clone/ update프로세스에 의해 관리 될 뿐만 아니라 스 태쉬, 재 호출 등도 수행 한다는 것을 지적했다 . 따라서 엄격한 백업 rsync이나 그에 상응하는 것이 실제로 갈 길이다. 필자가 말한 것처럼 (내가 후크, 숨김 등을 가질 여유가 없기 때문에) 실제로는 필요하지 않기 때문에 remote update.

감사! 내 자신의 "git-fu"조금 개선 : :-)


5

여기를 보아라: Git은 후속 클론의 모든 분기를 복제하지 않습니까?

당신이 정말로 대신에 가지를 당겨서 이것을 원한다면 push --mirror 여기를 살펴볼 수 있습니다.

git bare 저장소의 "fetch --all"은 로컬 브랜치를 원격 브랜치와 동기화하지 않습니다.

이 답변은 비교적 쉽게 달성하는 방법에 대한 자세한 단계를 제공합니다.


1
push수신 측에서 (클론이있는 곳에서)해야하기 때문에 옵션이 아닙니다. pull미러 리포지토리는 베어 리포지토리 (작업 트리가 없으므로 "풀"이 아님)이기 때문에 옵션이 아닙니다 git remote update. 링크 된 질문 / 답변에 중요한 정보가 있습니다.
J. Bruni

1
좋아, 나는 보통의 말처럼 당기는 것을 의미했다. 밀고 당기기 기술. git 또는 DVCS 시스템에 의미가있는 단어를 더빙하지 않는 '무의미한 클라이언트에서 원격으로 데이터를 가져옵니다'를 제외하고 다른 단어는 거의 없습니다. :) 두 번째 링크는 원하는 세부 정보를 제공합니다. 참고, 그 '자식 원격 업데이트'않습니다 하지 실제로 별도의 작업없이 '거울'상태를 유지하기가 언급 한
sehe

1
흠 ... 죄송합니다. (HTH)-원래의 repo 폴더의 간단한 "rsync"를 통해 "절대"미러가 더 쉽게 달성되는 것 같습니다. 그리고 내가 특별히 관심이있는
걸고리

1
참고로,이 미러의 목적은 다음과 같습니다. 1) 원래 리포 서버의 데이터가 손실 된 경우 복원 할 수있는 전체 백업; 2) 원래 소스 리포지토리에 액세스 할 필요없이 다른 사람이 로컬 리포지토리를 복제하여 로컬 리포지토리를 얻을 수있는 곳
J. Bruni

1
고리와 모든 것을 원한다면, gitosis는 (잘 기억하지 못하지만) 필요한 것을 가질 수 있지만 rsync그 경우에는 함께 갈 것입니다 . 또한, 당신이 숨김 에 대해 잊어 버리고 ( 여기 참조 ) 정보를 다시 생각한다고 가정합니다 ...?
sehe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.