자식 저장소를 완전히 백업 하시겠습니까? 모든 분기 및 태그를 포함하여 전체 자식

모든 분기 및 태그를 포함하여 전체 자식 저장소를 백업하는 간단한 방법이 있습니까?



답변

복제본을 만드는 방법은 무엇입니까?

git clone --mirror other/repo.git

모든 저장소는 원격의 백업입니다.


답변

git bundle

나는 그 방법을 좋아하는데, 하나의 파일 만으로 복사하기가 더 쉽습니다. ProGit : 작은 기쁨의 묶음을
참조하십시오 .
어떻게 누군가에게 git 저장소를 이메일로 보낼 수 있습니까? “를 참조하십시오.

git bundle create /tmp/foo-all --all

상세하다 :

git bundlegit show-ref 로 표시되는 참조 만 패키지 합니다. 여기에는 헤드, 태그 및 원격 헤드가 포함됩니다.
사용 된 기초가 목적지에 의해 유지되는 것이 매우 중요합니다.
번들 파일에 대상에 이미있는 오브젝트가 포함되어 있으므로 대상에서 압축을 풀 때 무시되기 때문에주의를 기울여야합니다.


해당 번들을 사용하기 위해 존재하지 않는 폴더를 지정하여 복제 할 수 있습니다 (git repo 외부).

git clone /tmp/foo-all newFolder

답변

다른 답변을 확장하면 이것이 내가하는 일입니다.

저장소를 설정하십시오. git clone --mirror user@server:/url-to-repo.git

그런 다음 git remote update복제 위치에서 백업을 새로 고치려고 할 때 .

이렇게하면 나중에 추가되는 새 항목을 포함하여 모든 지점과 태그가 백업되지만, 삭제 된 지점은 복제본에서 삭제되지 않습니다 (백업의 경우 좋을 수도 있음).

이것은 원자 적이므로 간단한 사본으로 인한 문제는 없습니다.

http://www.garron.me/en/bits/backup-git-bare-repo.html을 참조 하십시오


답변

KingCrunchVonC 의 훌륭한 답변 확대

나는 둘 다 결합했다.

git clone --mirror git@some.origin/reponame reponame.git
cd reponame.git
git bundle create reponame.bundle --all

그 후에는 reponame.bundle쉽게 복사 할 수 있는 파일 이 있습니다. 그런 다음을 사용하여 새로운 일반 git 저장소를 만들 수 있습니다 git clone reponame.bundle reponame.

참고 git bundle저장소에 일부 참조 (지점 또는 태그)로 이어질에만 복사 커밋. 따라서 엉킴 커밋은 번들에 저장되지 않습니다.


답변

모든 것이 .git디렉토리에 포함되어 있습니다. 파일과 마찬가지로 프로젝트와 함께 백업하십시오.


답변

자식 번들을 사용하거나 복제

git 디렉토리를 복사하는 것은 원자 적이 지 않기 때문에 좋은 해결책이 아닙니다. 복사하는 데 시간이 오래 걸리고 누군가가 저장소로 푸시하는 큰 저장소가있는 경우 백업에 영향을줍니다. 번들을 복제하거나 만들면이 문제가 발생하지 않습니다.


답변

최소 저장소 크기에서 git-copy 를 사용하여 git repo를 백업 할 수 있습니다 .

git copy /path/to/project /backup/project.repo.backup

그런 다음 프로젝트를 복원 할 수 있습니다 git clone

git clone /backup/project.repo.backup project