찾다
개발 도구자식이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!

git clone이 매우 느리거나 심지어 실패하는 비교적 큰 프로젝트를 접한 적이 있는지 모르겠습니다. 다들 어떻게 대처할 것인가?

다른 다운로드 소스로 변경하는 것을 고려할 수도 있고, 인터넷 속도를 높이기 위해 어떤 수단을 사용할 수도 있지만, 이 모든 방법을 시도해 보았지만 여전히 느리다면 어떻게 될까요?

오늘 이 문제가 발생했습니다. gitlab에서 typescript 코드를 다운로드해야 했는데 속도가 매우 느렸습니다.

git clone https://github.com/microsoft/TypeScript ts

오랜 시간을 기다린 후에도 다운로드가 완료되지 않아 매개변수

git clone https://github.com/microsoft/TypeScript --depth=1 ts
를 추가했습니다.

이로 인해 속도가 수십 배 향상되었으며 즉시 다운로드되었습니다.

--length를 추가하면 커밋 하나만 다운로드되므로 콘텐츠는 훨씬 줄어들고 속도는 빨라집니다. [관련 권장 사항: Git 사용 튜토리얼]

그리고 다운로드한 콘텐츠는 계속해서 새로운 커밋을 제출하고 새로운 브랜치를 생성할 수 있습니다. 후속 개발에는 영향을 미치지 않지만 기록 커밋 및 기록 분기로 전환할 수는 없습니다.

내 프로젝트 중 하나로 테스트했습니다. 먼저 커밋을 다운로드했습니다:

이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!

그 후 몇 가지 변경 사항을 적용하면 git add, commit 및 push가 정상적으로 제출될 수 있습니다. 새 지점 만들기도 정상적으로 제출할 수 있습니다. 유일한 단점은 기록 커밋과 기록 분기로 전환할 수 없다는 것입니다.

일부 시나리오에서는 매우 유용합니다. 기록 브랜치로 전환해야 할 때 필요한 커밋 수를 계산한 다음 깊이를 지정하면 속도도 향상될 수 있습니다. 이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!

이것이 왜 작동하는지 생각해 본 적이 있나요?

이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!Git 원리

Git은 일부 객체를 사용하여 정보를 저장합니다.

glob 객체는 파일 콘텐츠를 저장하고

tree 객체는 파일 경로를 저장하고

commit 객체는 커밋 정보를 저장하고 관련 트리

    는 커밋을 항목으로 사용합니다. 관련된 모든 트리와 blob은 이 커밋의 내용입니다.
  • 커밋은 서로 관련되어 있으며 헤드, 브랜치, 태그 등은 특정 커밋에 대한 포인터입니다. .git/refs에서 볼 수 있습니다. 이런 방식으로 브랜치, 태그 등의 개념이 커밋을 기반으로 구현됩니다.
Git은 이 세 가지 객체를 통해 버전 관리 및 분기 전환 기능을 구현합니다. 모든 객체는 .git/objects에서 볼 수 있습니다.

git이 작동하는 방식은 다음과 같습니다.

이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다! 주로 Blob, Tree, Commit의 세 가지 객체와 Head, Tag, Branch, Remote 등의 Ref를 이해합니다.

단일 커밋을 다운로드할 수 있는 원리

git은 특정 커밋을 진입점으로 모든 개체를 연결한다는 것을 알고 있으므로 히스토리가 필요하지 않으면 자연스럽게 하나의 커밋만 다운로드할 수 있습니다.

이러한 방식으로 해당 커밋을 기반으로 새 커밋이 생성되고 새 블롭, 트리 등이 연결됩니다. 그러나 기록 커밋, 트리 및 Blob은 다운로드되지 않았으므로 다시 전환할 수 없으며 해당 태그, 분기 및 기타 포인터도 마찬가지입니다. 이것이 단일 커밋을 다운로드하는 방법이지만 여전히 새로운 브랜치, 커밋 등을 생성할 수 있습니다.

요약

대규모 Git 프로젝트를 접할 때 --length 매개변수를 추가하면 속도를 크게 향상시킬 수 있습니다. 기록 커밋이 많을수록 다운로드 속도 향상이 커집니다.

이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!그리고 다운로드한 프로젝트는 후속 개발을 위해 계속 개발할 수 있으며 새 커밋, 새 브랜치 및 태그를 생성할 수 있지만 기록 커밋, 브랜치 및 태그로 전환할 수는 없습니다.

git의 원칙을 정리했습니다. 트리, 블롭, 커밋 세 가지 객체를 통해 파일과 제출 정보가 저장되고, 커밋 간의 연관을 통해 브랜치, 태그 등의 기능이 구현됩니다. 커밋은 모든 트리 및 blob과 연결된 진입점입니다.

커밋을 다운로드할 때 관련 트리, 블롭 및 일부 참조(태그, 브랜치 등 포함)를 모두 다운로드합니다. 이것이 --깊이의 원칙입니다.

이 기술을 사용하여 기록 커밋 및 분기로 전환하지 않고도 대규모 프로젝트의 git 복제 속도를 향상시킬 수 있기를 바랍니다.

위 내용은 이 기술을 사용하면 git clone 속도를 수십 배 향상시킬 수 있습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 juejin에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Git 및 Github : 개발자를위한 필수 도구Git 및 Github : 개발자를위한 필수 도구Apr 19, 2025 am 12:17 AM

Git과 Github는 현대 개발자에게 필수 도구입니다. 1. 버전 제어에 GIT를 사용하십시오 : 병렬 개발을위한 분기를 만들고, 분기를 병합하고, 롤백 오류. 2. 팀 협업에 GitHub를 사용하십시오 : 풀 레크를 통한 코드 검토를 통해 병합 충돌을 해결하십시오. 3. 실용적인 팁 및 모범 사례 : 정기적으로 제출하고, 메시지를 명확하게 제출하고, .gitignore를 사용하고, 코드 기반을 정기적으로 백업하십시오.

Git and Github : 그들의 관계가 설명되었습니다Git and Github : 그들의 관계가 설명되었습니다Apr 18, 2025 am 12:03 AM

Git과 Github는 동일하지 않습니다. Git은 분산 버전 제어 시스템이며 Github는 Git을 기반으로 한 온라인 플랫폼입니다. GIT는 개발자가 코드 버전을 관리하고 분기, 병합 및 기타 기능을 통해 협업을 달성하도록 도와줍니다. GitHub은 코드 호스팅, 검토, 문제 관리 및 소셜 상호 작용 기능을 제공하여 GIT의 협업 기능을 향상시킵니다.

Git을 다운로드 한 후 무엇을 설정해야합니까?Git을 다운로드 한 후 무엇을 설정해야합니까?Apr 17, 2025 pm 04:57 PM

GIT를 설치 한 후보다 효율적으로 사용하려면 다음 설정이 필요합니다. 사용자 정보 설정 (이름 및 사서함) 텍스트 편집기 선택 외부 병합 도구 생성 SSH 키 설정을 무시하십시오. 파일 모드를 무시하십시오.

GIT 다운로드가 활성화되지 않은 경우해야 할 일GIT 다운로드가 활성화되지 않은 경우해야 할 일Apr 17, 2025 pm 04:54 PM

해결 : GIT 다운로드 속도가 느리면 다음 단계를 수행 할 수 있습니다. 네트워크 연결을 확인하고 연결 방법을 전환하십시오. GIT 구성 최적화 : 포스트 버퍼 크기를 늘리고 (GIT 구성-글로벌 http.postBuffer 524288000) 저속 제한 (git config --global http.lowspeedlimit 1000)을 줄입니다. git 프록시 (예 : git-proxy 또는 git-lfs-proxy)를 사용하십시오. 다른 git 클라이언트 (예 : Sourcetree 또는 Github 데스크탑)를 사용해보십시오. 화재 보호를 확인하십시오

GIT 다운로드가 그렇게 느리게하는 이유GIT 다운로드가 그렇게 느리게하는 이유Apr 17, 2025 pm 04:51 PM

느린 GIT 다운로드의 원인에는 네트워크 연결 불량, GIT 서버 문제, 대규모 파일 또는 대규모 제출, GIT 구성 문제, 컴퓨터 리소스 불충분 및 맬웨어와 같은 기타 요소가 포함됩니다. 해결 방법에는 네트워크 연결 개선, 방화벽 설정 조정, 불필요한 파일 또는 제출물 다운로드 방지, GIT 구성 최적화, 적절한 컴퓨터 리소스 제공 및 맬웨어 스캔 및 제거가 포함됩니다.

Git에서 로컬 코드를 업데이트하는 방법Git에서 로컬 코드를 업데이트하는 방법Apr 17, 2025 pm 04:48 PM

로컬 git 코드를 업데이트하는 방법은 무엇입니까? Git Fetch를 사용하여 원격 저장소에서 최신 변경 사항을 가져옵니다. Git Merge Origin/& Lt; 원격 지점 이름 & gt; 합병으로 인해 발생하는 갈등을 해결합니다. git commit -m "merge branch & lt; 원격 브랜치 이름 & gt;" 병합 변경 사항을 제출하고 업데이트를 적용합니다.

git에서 코드를 업데이트하는 방법git에서 코드를 업데이트하는 방법Apr 17, 2025 pm 04:45 PM

GIT 코드를 업데이트하는 단계 : 코드 확인 : git 클론 https://github.com/username/repo.git 최신 변경 사항 가져 오기 : Git Fetch Merge 변경 사항 : GIT 병합 원산지/마스터 푸시 변경 (옵션) : Git Push Origin Master

git의 분기를 삭제하는 방법git의 분기를 삭제하는 방법Apr 17, 2025 pm 04:42 PM

다음 단계를 통해 git 브랜치를 삭제할 수 있습니다. 1. 로컬 브랜치 삭제 : Git Branch -D & Lt; Branch -Name & gt; 명령; 2. 원격 분기 삭제 : Git Push & Lt; Remote-Name & gt; -Delete & lt; branch-name & gt; 명령; 3. 보호 지점 : GIT 구성 분기를 사용하십시오. & lt; branch-name & gt;. 보호 분기 설정을 추가하기 위해 true.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구