>  기사  >  개발 도구  >  git과 svn의 구현 원칙은 동일합니까?

git과 svn의 구현 원칙은 동일합니까?

WBOY
WBOY원래의
2022-01-07 11:04:022973검색

git과 svn의 구현 원리는 다릅니다. git은 분산 버전 제어 시스템이지만 svn은 그렇지 않습니다. 이것이 git과 svn 비분산 버전 제어 시스템의 핵심 차이점입니다. svn은 파일 모드로 저장됩니다.

git과 svn의 구현 원칙은 동일합니까?

이 문서의 운영 환경: Windows 10 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.

git과 svn의 구현 원칙은 동일합니까?

Git은 크고 작은 프로젝트를 민첩하고 효율적으로 처리하는 데 사용되는 오픈 소스 분산 버전 제어 시스템입니다.

Git은 Linux 커널 개발 관리를 돕기 위해 Linus Torvalds가 개발한 오픈 소스 버전 제어 소프트웨어입니다.

Git은 CVS, Subversion 등 일반적으로 사용되는 버전 관리 도구와 다릅니다. 분산 버전 라이브러리를 채택하고 서버 측 소프트웨어 지원이 필요하지 않습니다.

1. Git과 SVN의 차이점

GIT는 버전 관리 시스템일 뿐만 아니라 컨텐츠 관리 시스템(CMS), 작업 관리 시스템 등을 겸비하고 있습니다.

SVN 사용 경험이 있는 사람이라면 GIT에서 제공하는 일부 개념과 기능에 적응하기 위해 특정한 이념적 변화가 필요합니다.

Git과 SVN의 차이점:

  • 1. GIT는 분산되지만 SVN은 그렇지 않습니다. 이것이 GIT와 SVN, CVS 등과 같은 기타 비분산 버전 제어 시스템 간의 핵심 차이점입니다.

  • 2. GIT는 콘텐츠를 메타데이터로 저장하고 SVN은 콘텐츠를 파일로 저장합니다. 모든 리소스 제어 시스템은 .svn, .cvs 등과 같은 폴더에 파일의 메타정보를 숨깁니다.

  • 3. GIT 브랜치는 SVN 브랜치와 다릅니다. SVN에서 브랜치는 전혀 특별하지 않으며 저장소의 또 다른 디렉터리입니다.

  • 4. GIT에는 글로벌 버전 번호가 없지만 SVN에는 있습니다. 지금까지 SVN에 비해 GIT에 부족한 가장 큰 기능입니다.

  • 5. GIT의 콘텐츠 무결성은 SVN보다 우수합니다. GIT의 콘텐츠 저장소는 SHA-1 해시 알고리즘을 사용합니다. 이는 코드 콘텐츠의 무결성을 보장하고 디스크 오류 및 네트워크 문제가 발생할 경우 저장소의 중단을 줄여줍니다.

2. Git 원칙: Git 작업 공간, 준비 영역 및 저장소

기본 개념

먼저 Git 작업 공간, 준비 영역 및 저장소의 개념을 이해해 보겠습니다.

작업 공간: Git에서 볼 수 있는 디렉터리입니다. 컴퓨터.

임시 저장 공간: 영어로 stage, index라고 합니다. 일반적으로 ".git 디렉터리" 하위의 인덱스 파일(.git/index)에 저장되므로 임시 저장 영역을 인덱스(index)라고 부르는 경우도 있습니다.

Repository: 작업 공간에 숨겨진 디렉터리 .git이 있습니다. 이것은 작업 공간이 아니라 Git 저장소입니다.

다음 그림은 작업 공간, 저장소의 준비 영역 및 저장소 간의 관계를 보여줍니다.

git과 svn의 구현 원칙은 동일합니까?

그림의 왼쪽은 작업 공간이고 오른쪽은 저장소입니다. 저장소에서 "index"라고 표시된 영역은 Staging 영역(스테이지, 인덱스)이고, "master"라고 표시된 영역은 master 브랜치가 나타내는 디렉터리 트리입니다.

그림에서 "HEAD"는 실제로 마스터 브랜치를 가리키는 "커서"임을 알 수 있습니다. 따라서 그림의 명령어에서 HEAD가 나타나는 부분을 master로 대체할 수 있다.

사진에서 개체로 식별되는 영역은 Git의 개체 라이브러리로 실제로는 ".git/objects" 디렉터리에 위치하며 생성된 다양한 개체와 콘텐츠가 포함되어 있습니다.

작업 공간에서 수정(또는 추가)된 파일에 대해 "git add" 명령을 실행하면 임시 저장 영역의 디렉터리 트리가 업데이트되고 동시에 해당 파일의 내용이 수정(또는 추가)됩니다. 작업 공간은 새 개체의 개체 라이브러리에 기록되고 개체의 ID는 임시 저장 영역의 파일 인덱스에 기록됩니다.

커밋 작업(git commit)을 수행하면 임시 저장 영역의 디렉터리 트리가 버전 라이브러리(객체 라이브러리)에 기록되고 그에 따라 마스터 브랜치가 업데이트됩니다. 즉, master가 가리키는 디렉토리 트리는 제출 당시의 임시 저장 영역의 디렉토리 트리이다.

"git Reset HEAD" 명령이 실행되면 스테이징 영역의 디렉토리 트리가 다시 작성되고 마스터 브랜치가 가리키는 디렉토리 트리로 대체되지만 작업 공간에는 영향을 미치지 않습니다.

"git rm --cached " 명령을 실행하면 임시 저장 영역에서 파일이 직접 삭제되며 작업 공간은 변경되지 않습니다.

"git checkout ." 또는 "git checkout -- " 명령이 실행되면 작업 공간의 파일이 스테이징 영역의 전체 또는 지정된 파일로 대체됩니다. 이 작업은 위험하며 준비 영역에 추가되지 않은 작업 공간의 변경 사항을 지웁니다.

"git checkout HEAD ." 또는 "git checkout HEAD " 명령이 실행되면 HEAD가 가리키는 마스터 브랜치의 파일 전체 또는 일부가 스테이징 영역의 파일을 대체하는 데 사용됩니다. 작업 공간. 이 명령은 작업 공간에서 커밋되지 않은 변경 사항을 지울 뿐만 아니라 준비 영역에서 커밋되지 않은 변경 사항도 지우기 때문에 매우 위험합니다.

추천 학습: "Git Tutorial"

위 내용은 git과 svn의 구현 원칙은 동일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.