다른 호스트의 git 저장소를 동기화 상태로 유지 백업 사본으로 NAS에 git을

작은 프로젝트를 시작하려고 생각하고 git으로 버전을 만들고 싶습니다.

Bitbucket 은 무료 플랜으로 나에게 좋은 옵션 인 것 같습니다. 웹 인터페이스, Mac OS 클라이언트 등과 같은 멋진 도구가 있기 때문에 git 작업을위한 주요 도구로 사용하고 싶습니다. 그러나 타사 서비스를 사용하여 발생할 수있는 우발적 손상으로부터 보호하기 위해 저장소의 두 번째 백업 사본으로 NAS에 git을 설치하고 싶습니다.

이제 제 질문은 두 개의 다른 호스트에 리포지토리를 만든 다음 동기화 상태를 유지할 수 있는지 여부입니다. 예를 들어, 일주일에 한 번 NAS의 저장소를 Bitbucket의 저장소와 일치하도록 업데이트한다고 가정합니다. 그런 다음 Bitbucket에 문제가 발생하더라도 로컬 NAS 저장소에 대한 전체 개발 기록이있는 전체 저장소가 계속 남아 있습니다.

그리고 전체 히스토리가있는 기존 저장소를 다른 git-service로 가져 오는 방법이 있습니까?


미러링이 필요한 것이라고 생각합니다. 이 기사 는 내가 필요한 것을 정확하게 설명하는 것 같습니다. 그리고이 하나 뿐.

나는 그것이 전체 기록으로 전체 사본을 만들고 두 호스트의 저장소에 자동으로 새 버전을 자동 커밋 할 것이라고 생각합니다.

내가 맞아?



답변

예, git와 같은 DVCS의 장점입니다. bitbucket 또는 github의 상태와 동일한 상태로 여러 개의 다른 repos를 사용할 수 있습니다.

로컬 사본 (컴퓨터의 저장소)도 일반적으로 원격 저장소의 전체 복제본입니다.

여러 리포지토리를 동기화 상태로 유지하기 위해 수행해야 할 유일한 작업은 하나 (일반적으로 오리진 또는 업스트림이라고 함)를 가져 와서 백업 사본으로 푸시하는 것입니다.


답변

이 문제에 대한 테스트 솔루션은 다음과 같습니다. Automatic Sync 2 Remote Git Repositories

2 개의 원격 Git 리포지토리를 동기화하기위한 간단한 스크립트

웹에서 동기화 할 간단한 스크립트를 검색했습니다. 2 개의 원격 저장소이지만 많은 사람들이 그것을 찾는 것처럼 보이지만 그러한 스크립트를 찾을 수 없습니다! 그래서 2 개의 간단한 테스트 저장소를 만들고 그러한 스크립트를 테스트하고 빌드하기 시작했습니다.

그러한 스크립트는 무엇을해야합니까?

일반적으로이를 수행하는 단계는 간단합니다. 1. 첫 번째 저장소 복제 1. 두 번째 저장소를 추가 원격 저장소로 추가 1. 두 번째 저장소에있는 모든 항목 가져 오기 1. 업데이트 된 로컬 저장소를 2로 푸시 원격 저장소.

남아있는 문제는-위의 모든 자식 명령에 올바른 스위치는 무엇입니까?

여기에 …

2repos-sync.sh gisp 스크립트

# Clear the folder first - please use this carefully
rm -rf $REPO_NAME
# clone the reposotory
git clone --bare $ORIGIN_URL

# add a remote repository
cd $REPO_NAME
git remote add --mirror=fetch repo1 $REPO1_URL

# update the local copy from the first repository
git fetch origin --tags

# update the local copy with the second repository
git fetch repo1 --tags

# sync back the 2 repositories
git push origin --all
git push origin --tags
git push repo1 --all
git push repo1 --tags

참고 -이 스크립트는 리포지토리 컨텐츠 간의 충돌 사례를 해결하지 않습니다!


답변

개인 저장소를 사용하여 모든 리포지토리를 저장하므로 매일 개발하는 동안 밀고 당기는 원본이 하나뿐입니다.

그러나 오픈 소스 프로젝트의 경우 GitHub는 훨씬 활발한 커뮤니티이므로 프로젝트에 대한 커뮤니티 기여를 수락하려면 웹 GitLab의 웹 후크 시스템을 사용하여 서버를 핑하고 GitHub에서 공개 리포지토리를 업데이트합니다.

이를 통해 GitHub를 로컬에서 누군가가 기여할 때 가져올 수있는 또 다른 리모콘으로 취급 할 수 있습니다.


답변