일반 Git 저장소를 베어 저장소로 변환하는 방법은 무엇입니까? 같습니다. 일반 Git

‘일반적인’Git 저장소를 베어 저장소로 어떻게 변환 할 수 있습니까?

주요 차이점은 다음과 같습니다.

  • 일반 Git 리포지토리 .git에는 리포지토리 내에 모든 관련 데이터와 작업 복사본을 구성하는 다른 모든 파일이 들어 있는 폴더가 있습니다.

  • 베어 Git 리포지토리에는 작업 복사본이 없으며 폴더 ( repo.git실제로 호출 )에는 실제 리포지토리 데이터가 포함됩니다



답변

한마디로 :의 내용 대체 repo의 내용을 repo/.git한 후, 지금 베어 저장소라는 저장소를 말한다.

이렇게하려면 다음 명령을 실행하십시오.

cd repo
mv .git ../repo.git # renaming just for clarity
cd ..
rm -fr repo
cd repo.git
git config --bool core.bare true

이것은 git clone --bare새로운 위치 를 수행하는 것과 다릅니다 (아래 참조).


답변

귀하의 방법은 효과가있는 것처럼 보입니다. 베어 리포지토리의 파일 구조는 .git 디렉토리 안에 있습니다. 그러나 파일이 실제로 변경되었는지 여부를 알 수 없으므로 실패하면 할 수 있습니다.

git clone --bare /path/to/repo

이름 충돌을 피하기 위해 다른 디렉토리에서 수행해야 할 수도 있으며 원하는 위치로 다시 이동할 수 있습니다. 그리고 오리진 저장소가있는 곳을 가리 키도록 구성 파일을 변경해야 할 수도 있습니다.


답변

다음 링크가 도움이 될 것이라고 생각합니다.

GitFaq : 기존의 비베 어리 저장소를 맨손으로 만들려면 어떻게합니까?

$ mv repo/.git repo.git
$ git --git-dir=repo.git config core.bare true
$ rm -rf repo

답변

파일 시스템에서 비트를 특별히 비틀거나 원치 않는 한 비 베어 리포지토리의 베어 버전을 만드는 것은 실제로 간단합니다 (여기의 다른 게시물에 언급되어 있음). 그것은 git의 핵심 기능의 일부입니다.

git clone --bare existing_repo_path bare_repo_path


답변

또한 사용을 고려하십시오

git clone --mirror path_to_source_repository

로부터 문서 :

소스 저장소의 미러를 설정하십시오. 이것은 –bare를 의미합니다. –bare와 비교하여 –mirror는 소스의 로컬 브랜치를 대상의 로컬 브랜치에 매핑 할뿐만 아니라 모든 참조 (원격 추적 브랜치, 노트 등 포함)를 매핑하고 이러한 모든 참조가되도록 참조 사양 구성을 설정합니다. 대상 리포지토리의 git 원격 업데이트로 덮어 씁니다.


답변

방금 네트워크 경로의 리포지토리로 푸시하고 싶었지만 git은 해당 리포지토리가 베어로 표시되지 않으면 그렇게 할 수 없습니다. 필요한 것은 구성을 변경하는 것입니다.

git config --bool core.bare true

파일을 깨끗하게 유지하지 않는 한 파일을 조작 할 필요가 없습니다.


답변

나는 답변을 읽었으며 이것을 수행했습니다.

cd repos
mv .git repos.git
cd repos.git
git config --bool core.bare true # from another answer
cd ../
mv repos.git ../
cd ../
rm -rf repos/ # or delete using a file manager if you like

이것은 repos/.git맨손으로 내용을 남길 것입니다repos.git