.git 디렉토리가 없는 Git 클론
전달할 플래그가 있습니까?git
복제를 수행할 때 복제 안 함이라고 말합니다..git
디렉토리?만약 그렇지 않다면, 삭제할 플래그는 어떻습니까?.git
복제본 뒤에 디렉토리를 지정하시겠습니까?
사용하다
git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
- 깊이 옵션을 사용하면 해당 보고서를 얻기 위해 가능한 최소 기록 비트를 복사할 수 있습니다.
- 분기 옵션은 선택 사항이며 지정하지 않으면 기본 분기를 가져옵니다.
- 두 번째 줄은 당신의 디렉토리를 만들 것입니다.
dirformynewrepo
더 이상 Git 저장소가 아닙니다. - 재귀 하위 모듈 복제를 수행하는 경우 깊이 및 분기 매개 변수가 하위 모듈에 적용되지 않습니다.
당신은 파일만 원하기 때문에, 당신은 그것을 기트 레포로 취급할 필요가 없습니다.
rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .
로컬 경로 및 원격 ssh/rsync 경로에서만 작동하며, 원격 서버가 git:// 또는 https:// 액세스만 제공하는 경우에는 작동하지 않을 수 있습니다.
또는 Node.js가 설치된 경우 다음 명령을 사용할 수 있습니다.
npx degit GIT_REPO
npx
노드와 함께 제공되며 먼저 설치하지 않고 이진 노드 기반 패키지를 실행할 수 있습니다(또는 먼저 설치할 수 있음).degit
전체적으로 사용npm i -g degit
).
드짓은 스벳앤롤업을 만든 리치 해리스가 만든 도구로, 그가 깃 폴더를 보관하지 않고 저장소를 복제해 새 프로젝트를 빠르게 만드는 데 사용합니다.하지만 레포를 한 번 복제하는 데도 사용할 수 있습니다.
git clone --separate-git-dir=$(mktemp -u) --depth=1 <repo> <dir> && rm <dir>/.git
나는 이 솔루션이 더 마음에 듭니다. 왜냐하면 나는 좋아하지 않기 때문입니다.rm -rf
자동으로 사물을 처리합니다.그냥rm
s.git 파일로, 그것은 결코 우연히 일어날 수 없다는 것을 의미합니다.rm -rf
잘못된 .git 디렉토리
에 의존합니다.mktemp
*nix 시스템이 작동하도록 명령합니다(제가 보기에 이것은 더 많은 작업이 필요합니다).mktemp
MacOS에서 작업하기 때문에, 작업 솔루션에 대해 언급하고 싶은 사람이 있으면 추가하겠습니다.)
zsh에서, 나는 그것을 함수로 만들었다, 그래서 나는 확신합니다.dir
값이 정의됩니다.
alias np='node-project'
function node-project() {
dir=${1:-.}
git clone --separate-git-dir=$(mktemp -u) --depth=1 <my-node-repo> $dir && rm $dir/.git
}
설명.
그--separate-git-dir
flag를 사용하여 .git 디렉터리의 경로를 지정할 수 있습니다.결과 "프로젝트"는 디렉터리가 아닌 .git 파일을 가질 것이며 그 내용은 한 줄이 될 것입니다.
gitdir: <the dir you specified in the flag>
왜냐하면 우리는 tmpdir를 사용했기 때문입니다.mktemp
명령, 실제.git
디렉터리 내용은 tmpdir로 끝날 것입니다.또한 다음을 사용합니다.--depth=1
그래서 tmp dirs에서 공간을 덜 차지합니다.
솔루션이 여전히 다운로드되고 있기 때문에 솔루션을 의심하는 사람들을 위해.git
디렉터리를 수동으로 제거해야 합니다. 어쩌면 깃 클론이 실제로 어떻게 작동하는지 알아야 할 수도 있습니다.
일반적으로 레포를 복제할 때 모든 파일(커밋에 걸쳐 있음)을 다운로드합니다..git
디렉토리입니다.로 --depth 1
만 Git는 최신파다운다니합드로 합니다..git
그런 다음 git이 해당 파일을 검색합니다..git
작업 디렉토리로 이동합니다(더 이상 다운로드 안 함).
그리고 종종, 파일이 내부의 객체이기 때문에.git
을 더 할 수 .git clone --depth 1
압축되지 않은 파일을 다운로드하는 대신. 느린 인터넷을 를 치를 .rm -rf
).
저는 개인적으로 해결책이 더 좋다고 생각하지만 GitHub에서 지원하지 않기 때문에,--depth 1
가는 길입니다.
git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo1
rd /s /q .\dirformynewrepo1\.git
이것은 윈도우 시스템에서 작동합니다.
git archive --remote
이미 구현했습니다.
저장소가 GitHub에 있으면 다음 태그의 ZIP 파일을 다운로드하기만 하면 됩니다.
curl -L https://github.com/<user>/<repo-name>/archive/refs/tags/v1.2.3.zip | tar xz
그러면 리포지토리가 다운로드되고 압축이 해제됩니다.내용은 다음과 같습니다.<repo-name>-1.2.3
.git
폴더를 누릅니다.
언제든지 할 수 있습니다.
git clone git://repo.org/fossproject.git && rm -rf fossproject/.git
언급URL : https://stackoverflow.com/questions/11497457/git-clone-without-git-directory
'programing' 카테고리의 다른 글
앱이 백그라운드에 있을 때 메시지 수신 시 Firebase가 호출되지 않음 (0) | 2023.07.09 |
---|---|
로그아웃 시 세션을 지우는 방법 (0) | 2023.07.09 |
선택한 드롭다운 목록 항목을 프로그래밍 방식으로 설정 (0) | 2023.07.09 |
"보다 큼"을 사용하는 피벗 테이블의 보고서 필터 (0) | 2023.07.09 |
Excel 문서를 Wiki 마크업으로 변환 (0) | 2023.07.09 |