두 개의 원격 git 저장소 동기화

미하일 말 체프

다음 설정이 있다고 가정합니다.

  1. 일부 프로젝트 의 git 저장소 ( "upstream" 이라고합시다 )가 있습니다 (실제로 SVN 저장소의 미러이지만 어떤 문제도 발생하지 않기를 바랍니다). 나는 그것에 대한 읽기 전용 액세스 권한이 있습니다 (물론 후크 등을 설치하기 위해 서버에 액세스 할 수 없습니다).
  2. SSH를 통해 액세스 할 수있는 개인 Git 저장소도 있습니다. "거울" 이라고합시다 . 내 개인 지점과 함께 업스트림 사본을 포함해야합니다.

업스트림에서 미러로 모든 업데이트를 복사하고 싶습니다 (예를 들어 Jenkins의 일부 cronjob 또는 주기적 작업을 사용합니다. 즉, 미러가있는 시스템이 아닌 다른 시스템에서 복사해야 함). 내 브랜치는 항상 업스트림의 브랜치와 다르므로 충돌이 발생하지 않아야합니다 (그렇지 않으면 스크립트가 실패하지만 로컬 브랜치를 덮어 쓰면 안됩니다). 모든 "헤드"를 업데이트해야합니다.

필자 가 필요한 거의 모든 작업을 수행하는 스크립트찾았 지만 "대칭"경우 (즉, 모든 저장소에 작성)에서만 작동하는 것으로 보이며이를 수정하려면 git man에 너무 많은 "다이빙"이 필요할 수 있습니다.

나는 작동하는 해결책을 고맙게 생각합니다 (물론 누군가가 나를 위해 다른 300 줄 스크립트를 작성할 것이라고 기대하지는 않지만 이미 작성되었거나 실제로 생각보다 쉬울 수 있습니다) 또는 위에서 언급 한 스크립트 수정에 대한 몇 가지 힌트 .

BoomShadow

예, 찾은 스크립트는 좋아 보이지만 하나의 단일 저장소를 가져 오려는 것을 고려할 때 필요에 비해 너무 큽니다. 훨씬 적은 코드 줄로이를 수행 할 수 있어야합니다.

이것이 새 프로젝트라고 가정하면 동기화 스크립트를 호스팅 할 서버에서 실행할 것입니다.

git clone [email protected]:some_user/some_project.git
git remote add mirror ssh://[email protected]_url.com/some_project.git

그러면 읽기 전용 애플리케이션의 초기 복제가 수행됩니다. 그런 다음 백업 위치를 "미러"라는 또 다른 원격으로 설정합니다. 실제로 원하는대로 부를 수 있습니다.

그런 다음 오리진이 변경 될 때만 동기화 위치를 업데이트하는 bash 스크립트가 있습니다. 이것을 간단한 크론 작업에 넣을 수 있습니다.

#! /bin/bash
cd /path/to/git/repo/
if [ "`git pull origin`" == "Already up-to-date." ]
then
    echo "Nothing to update!"
else
    git push mirror
fi

내 Github와 개인 Gitlab 서버에있는 프로젝트에서 이것을 테스트했습니다. 성공적으로 작동했습니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

2 개의 원격 GIT 저장소 동기화

분류에서Dev

git을 사용하여 두 개의 동일한 저장소를 로컬 및 원격 호스트 (github 아님)에서 동기화

분류에서Dev

두 개의 다른 git 저장소와 로컬 파일 동기화

분류에서Dev

로컬 파일을 원격 git 저장소에 동기화

분류에서Dev

Eclipse의 원격 저장소에 새 git 분기 푸시

분류에서Dev

git-tfs 저장소의 기본 원격 변경

분류에서Dev

git 저장소의 복원 된 로컬 사본 동기화

분류에서Dev

모든 Eclipse 원격 동기화에서 Git 저장소 크기 증가

분류에서Dev

git 원격 저장소를 iis 애플리케이션과 동기화

분류에서Dev

원격 git 저장소의 기본 브랜치를 어떻게 찾습니까?

분류에서Dev

git 기록없이 두 개의 git 저장소가 분기 된 위치 찾기

분류에서Dev

원격으로 git 저장소 초기화

분류에서Dev

Git은 로컬 저장소를 원격 저장소와 동기화하지 않습니다.

분류에서Dev

Git은 로컬 저장소를 원격 저장소와 동기화하지 않습니다.

분류에서Dev

GIT 원격 원본 저장소 삭제 및 기본 저장소 변경

분류에서Dev

로컬 git 마스터를 기존 git 허브 원격 저장소에 동기화 할 수 없습니다.

분류에서Dev

Git 오류 : 원격 압축 풀기 실패 : 임시 개체 디렉터리를 만들 수 없음-원격 저장소로 푸시하는 동안

분류에서Dev

Git : 충돌이있는 기록과 두 개의 저장소 병합

분류에서Dev

Git-원격 분기 분기 저장소

분류에서Dev

Git 원격 저장소의`set-url` 사용 방법

분류에서Dev

원격 저장소없이 git의 타당성

분류에서Dev

원격 저장소의 Git 얕은 복제 특정 버전

분류에서Dev

동일한 서버에 원격 GIT 저장소 게시

분류에서Dev

명령 줄에서 원격 git 저장소 열기

분류에서Dev

원격에서 새 저장소로 Git 푸시, 즉석에서 초기화

분류에서Dev

두 개의 git 저장소, 그중 하나에서 경로를 제외해야하지만 동기화 상태로 유지

분류에서Dev

두 개의 다른 git 저장소간에 코드를 "부분 동기화"하는 방법은 무엇입니까?

분류에서Dev

동일한 브랜치에 새 커밋이있을 때 로컬 git 저장소를 원격 저장소와 자동으로 동기화

분류에서Dev

Git에서 두 개의 저장소 및 두 개의 프로젝트 작업

Related 관련 기사

  1. 1

    2 개의 원격 GIT 저장소 동기화

  2. 2

    git을 사용하여 두 개의 동일한 저장소를 로컬 및 원격 호스트 (github 아님)에서 동기화

  3. 3

    두 개의 다른 git 저장소와 로컬 파일 동기화

  4. 4

    로컬 파일을 원격 git 저장소에 동기화

  5. 5

    Eclipse의 원격 저장소에 새 git 분기 푸시

  6. 6

    git-tfs 저장소의 기본 원격 변경

  7. 7

    git 저장소의 복원 된 로컬 사본 동기화

  8. 8

    모든 Eclipse 원격 동기화에서 Git 저장소 크기 증가

  9. 9

    git 원격 저장소를 iis 애플리케이션과 동기화

  10. 10

    원격 git 저장소의 기본 브랜치를 어떻게 찾습니까?

  11. 11

    git 기록없이 두 개의 git 저장소가 분기 된 위치 찾기

  12. 12

    원격으로 git 저장소 초기화

  13. 13

    Git은 로컬 저장소를 원격 저장소와 동기화하지 않습니다.

  14. 14

    Git은 로컬 저장소를 원격 저장소와 동기화하지 않습니다.

  15. 15

    GIT 원격 원본 저장소 삭제 및 기본 저장소 변경

  16. 16

    로컬 git 마스터를 기존 git 허브 원격 저장소에 동기화 할 수 없습니다.

  17. 17

    Git 오류 : 원격 압축 풀기 실패 : 임시 개체 디렉터리를 만들 수 없음-원격 저장소로 푸시하는 동안

  18. 18

    Git : 충돌이있는 기록과 두 개의 저장소 병합

  19. 19

    Git-원격 분기 분기 저장소

  20. 20

    Git 원격 저장소의`set-url` 사용 방법

  21. 21

    원격 저장소없이 git의 타당성

  22. 22

    원격 저장소의 Git 얕은 복제 특정 버전

  23. 23

    동일한 서버에 원격 GIT 저장소 게시

  24. 24

    명령 줄에서 원격 git 저장소 열기

  25. 25

    원격에서 새 저장소로 Git 푸시, 즉석에서 초기화

  26. 26

    두 개의 git 저장소, 그중 하나에서 경로를 제외해야하지만 동기화 상태로 유지

  27. 27

    두 개의 다른 git 저장소간에 코드를 "부분 동기화"하는 방법은 무엇입니까?

  28. 28

    동일한 브랜치에 새 커밋이있을 때 로컬 git 저장소를 원격 저장소와 자동으로 동기화

  29. 29

    Git에서 두 개의 저장소 및 두 개의 프로젝트 작업

뜨겁다태그

보관