2010-05-27 3 views
7

가능한 중복은 :
How to convert a git repository from normal to bare ?벌거 벗은 자식 저장소를 벌거 벗게 만들려면 어떻게해야합니까?

나는 사람들이 밖으로 큰 불쾌한 경고와 함께 그것을 밀어 수 있도록 베어의 repo에 REPO을하고 싶습니다. 나는 그것을 지울 수 있고 그것을 다시 복제 할 수있다. 그러나 아마 더 우아한 방법이있을 것인가?

+0

이러한 베어 리포지토리 또는 스파 스 리포지토리를 호출해야합니까? –

+0

git은'git clone --bare'처럼 '베어 (bare)'저장소라고 부릅니다. – Peter

+0

thanks :) 편집 : s/sparse/bare/g –

답변

10

아마도 그냥 삭제하고 다시 복제하는 것이 가장 좋습니다. 예 :

mv old_git_repo/ /tmp/ 
git clone --bare /tmp/old_git_repo/ new_git_repo/ 

또한 단지 작업 파일을 제거하고 ..git/*을 촉진 할 수있다. 그러나, 당신은 또한 이전 .git/config 새로운 베어 config[core] 섹션 (에 logallrefupdates = truebare = true를 추가하고 제거해야 할 것입니다 당신이 좋아하는 경우 자동으로이 작업을 수행하는 스크립트를 만들 수

편집 :.. 당신이 언급 한 이것은 svn에서 복제 된 주석이므로 새로운 클론은 오랜 시간이 걸릴 것입니다.하지만 svn에서 복제하지 마십시오! 새로운 git repo에서 복제하면 git -> git이됩니다. 위의 파일을 이동하는 것에 대한 위의 내용을 참조하십시오.

+1

나는 두 번째 복제 권고 (자식 -> 자식,하지 svn -> 자식, 물론). 가능하다면'.git' 내부를 조롱하는 것을 피하는 것이 가장 좋습니다. 아주 간단한 조작 임에도 불구하고 가능합니다. – Cascabel

+0

'git clone --bare/path/to/existing_repo/path/to/new_repo'를 실행하면 "너무 많은 인수"오류가 발생합니다. 또한 첫 번째 인수에서'/ .git'를 사용하여 시도했습니다. –

1

베어 리포 지 토리는 단순히 작업 디렉토리가없는 .git 디렉토리이므로 프로젝트 디렉토리를 conte로 간단하게 대체 할 수 있습니다 nts의 .git 작동해야합니다 :

mv /path/to/projectdir /path/to/projectdir.old 
mv /path/to/projectdir.old/.git /path/to/projectdir 
rm -rf /path/to/projectdir 
+1

'core.bare' 설정 옵션을 true 값으로 설정해야합니다. 그러나 아마도'git clone --bare'를 사용하는 것이 가장 좋습니다. –

+0

맞습니다. "git config core.bare 1"명령도 필요합니다. 수정 주셔서 감사! – gyim

+3

세 번째 줄은'rm -rf/path/to/projectdir.old'가 아니어야합니까? 작업 디렉토리를 유지하면서 git 데이터베이스를 버리고 있습니다. –

관련 문제