2011-10-25 2 views
9

Bitbucket (Git 및 Mercurial을 지원함)의 모든 저장소를 로컬 컴퓨터에 백업하는 도구를 작성하고 있습니다.Git * INTO *를 사용하여 원시 저장소를 가져 오거나 가져 오는 방법은 무엇입니까?

그것은 이미 내가 이런 식으로 그것을 할 의욕, 작동 :

  • 로컬 시스템
    (A bare Git 저장소와 같은 동일)
  • 에 작업 복사본을하지 않고 비어있는 새 저장소를 작성 원격 저장소에서 로컬 빈 저장소로 이동하십시오.

이제 Git과 동일한 작업을 수행하려고합니다.

I already found out 내가 직접 pull을 베어 리포지토리에 추가 할 수 없으며 대신 fetch을 사용해야합니다. 뭔가를 가져 않았다

C:\test>git fetch https://github.com/SamSaffron/dapper-dot-net.git 
remote: Counting objects: 1255, done. 
remote: Compressing objects: 100% (1178/1178), done. 
remote: Total 1255 (delta 593), reused 717 (delta 56) 
Receiving objects: 100% (1255/1255), 13.66 MiB | 706 KiB/s, done. 
Resolving deltas: 100% (593/593), done. 
From https://github.com/SamSaffron/dapper-dot-net 
* branch   HEAD  -> FETCH_HEAD 

분명히 망할 놈의 하지만, 로컬 저장소는 그 후 비어 :

그래서 나는 그것을 시도했다.
(fatal: bad default revision 'HEAD')

내가 뭘 잘못하고 있니?

면책 조항 :
나는 매우, 아주 기본적인 망할 놈의 지식 (나는 보통 의욕를 사용)했다.
그리고 중요하다면 Windows를 사용하고 있습니다.

+0

[베어 REPO에 자식 로그 및 쇼]의 중복 가능성 (http://stackoverflow.com/questions/6214711/git-log-and-show-on-a-bare-repo) – CharlesB

+0

@CharlesB :이 링크의 답변 중 어느 것도 나를 위해 일하지 않습니다. 'git log branchname'(나는 마스터를 시도했다.)이나 "저장소의 모든 것을 시각화하려면 ..."명령은 아니었다. 대답. –

답변

14

당신이 정말로 백업 할 경우

git fetch https://github.com/SamSaffron/dapper-dot-net.git master:master 
+2

이것은 오직 master 브랜치만을 가져 오는 것으로 보인다. (Dapper는 다른 브랜치를 가지고 있지 않기 때문에 나는 https://github.com/dontangg/nocco로 시도했다.) ** 모든 ** 지점을 가져올 수 있습니까? 이것은 백업 도구 일 것이고, 물론 나는 거기에있는 모든 것을 백업하고 싶습니다. –

+2

''* : * ''또는''refs/heads/* : refs/heads/*''와 같은 것이 있습니다. –

+0

'* : *'는 나를 위해 작동하지 않습니다. ('치명적 : 잘못된 refspec '*. *'') 그러나'refs/heads/* : refs/heads/* '는 속임수를 사용합니다. 고맙습니다! –

3

내가 당신을 생각하십시오. $ git clone --mirror XXXX 명령을 사용해보십시오. 그것은 저장소에서 거의 모든 것을 얻을 것이다. 희망이 도움이됩니다. 백업하려면

+2

예,하지만 백업을 정기적으로 실행하고 싶습니다. 그래서 첫 번째 실행 후, 로컬 저장소가 이미 존재합니다. -> 나는'pull '/'fetch'/anyway를 실행해야만합니다. 그리고 ** ** 모든 것을 ** 끌어들이도록하십시오. –

+1

당신이 맨손으로 거울을 그린 후에. 'git fetch --all --progress -v'명령을 사용하여 로컬 베어러를 업데이트 할 수 있습니다. –

2
$ git fetch https://github.com/SamSaffron/dapper-dot-net.git +refs/heads/*:refs/heads/* --prune 
2

하여 베어 저장소에 원격 저장소 regulary에 처음

git config remote.origin.url https://github.com/SamSaffron/dapper-dot-net.git 
git config remote.origin.fetch "+*:*" 

구성한 다음 단순히 백업

git fetch --prune 

를 실행합니다.

  • 원격 저장소를 복제하는 동안 이미 설정되었으므로 첫 번째 구성 추가를 건너 뛸 수 있습니다.
  • 쉘에서 해석되지 않는 별표 (*)를 보호하려면 위 명령에서 큰 따옴표 (")를 함께 사용하십시오.
  • 빨리 감기가 아닌 업데이트를 허용하려면 더하기 기호가 필요합니다. 리모컨의 현재 상태를 백업하려는 경우 그럴 것입니다.
  • 옵션 --prune은 현재 존재하지 않는 분기로도 삭제하는 데 사용됩니다.
+2

한 곳에서 모든 관련 사실을 잘 설명하면, 특히 큰 따옴표와 [+] 접미사 [https://git-scm.com/book/en/]의 접두어가 필요합니다. v2/Git-Internals-The-Refspec)를 참조하십시오. – starfry

관련 문제