본문 바로가기

카테고리 없음

Git의 역사 및 Git을 사용해야하는 이유

지금까지 오늘날 세계에서 가장 널리 사용되는 최신 버전 관리 시스템은 Git입니다. Git은 원래 Linux 운영 체제 커널의 유명한 제작자인 Linus Torvalds가 2005년에 개발한 성숙하고 적극적으로 유지 관리되는 오픈 소스 프로젝트입니다. 엄청난 수의 소프트웨어 프로젝트가 상용 프로젝트와 오픈 소스를 포함하여 버전 제어를 위해 Git에 의존하고 있습니다. Git으로 작업한 개발자는 사용 가능한 소프트웨어 개발 인재 풀에서 잘 대표되며 광범위한 운영 체제 및 IDE(통합 개발 환경)에서 잘 작동합니다.

분산 아키텍처를 사용하는 Git은 DVCS(따라서 분산 버전 제어 시스템)의 한 예입니다. Git에서는 CVS 또는 Subversion(SVN이라고도 함)과 같은 한때 인기 있었던 버전 제어 시스템에서 일반적으로 사용되는 소프트웨어의 전체 버전 기록을 위한 단일 위치가 아니라 모든 개발자의 코드 작업 복사본도 저장소입니다. 모든 변경 사항의 전체 기록을 포함할 수 있습니다.

Git은 배포되는 것 외에도 성능, 보안 및 유연성을 염두에 두고 설계되었습니다.


성능


Git의 원시 성능 특성은 많은 대안과 비교할 때 매우 강력합니다. 새로운 변경 사항 커밋, 분기, 병합 및 이전 버전 비교는 모두 성능에 최적화되어 있습니다. Git 내부에 구현된 알고리즘은 실제 소스 코드 파일 트리의 공통 속성, 일반적으로 시간이 지남에 따라 수정되는 방식 및 액세스 패턴에 대한 심층적인 지식을 활용합니다.

일부 버전 제어 소프트웨어와 달리 Git은 파일 트리의 저장소 및 버전 기록을 결정할 때 파일 이름에 속지 않고 대신 파일 내용 자체에 중점을 둡니다. 결국 소스 코드 파일은 자주 이름이 바뀌고, 분할되고, 재배열됩니다. Git 저장소 파일의 개체 형식은 델타 인코딩(콘텐츠 차이 저장), 압축의 조합을 사용하고 디렉터리 콘텐츠 및 버전 메타데이터 개체를 명시적으로 저장합니다.

분산되면 상당한 성능 이점도 얻을 수 있습니다.

예를 들어, Alice라는 개발자가 소스 코드를 변경하고 곧 출시될 2.0 릴리스에 대한 기능을 추가한 다음 설명 메시지로 변경 사항을 커밋한다고 가정해 보겠습니다. 그런 다음 그녀는 두 번째 기능을 작업하고 해당 변경 사항도 커밋합니다. 당연히 이들은 버전 기록에 별도의 작업으로 저장됩니다. 그런 다음 Alice는 이전 버전에만 영향을 미치는 버그를 수정하기 위해 동일한 소프트웨어의 버전 1.3 분기로 전환합니다. 이것의 목적은 버전 2.0이 준비되기 전에 Alice의 팀이 버그 수정 릴리스 버전 1.3.1을 출시할 수 있도록 하는 것입니다. 그런 다음 Alice는 2.0 분기로 돌아가 2.0의 새로운 기능에 대한 작업을 계속할 수 있으며 이 모든 작업은 네트워크 액세스 없이 발생할 수 있으므로 빠르고 안정적입니다. 그녀는 심지어 비행기에서 그것을 할 수 있습니다. 그녀가 개별적으로 커밋된 모든 변경 사항을 원격 저장소로 보낼 준비가 되면,

보안


Git은 관리되는 소스 코드의 무결성을 최우선으로 하여 설계되었습니다. 파일의 내용은 물론 파일과 디렉토리, 버전, 태그 및 커밋 간의 실제 관계, Git 리포지토리의 이러한 모든 개체는 SHA1이라는 암호학적으로 안전한 해싱 알고리즘으로 보호됩니다. 이는 우발적이거나 악의적인 변경으로부터 코드와 변경 기록을 보호하고 기록을 완전히 추적할 수 있도록 합니다.

Git을 사용하면 소스 코드의 확실한 콘텐츠 기록이 있는지 확인할 수 있습니다.

일부 다른 버전 제어 시스템에는 나중에 비밀 변경에 대한 보호 기능이 없습니다. 이것은 소프트웨어 개발에 의존하는 모든 조직에 심각한 정보 보안 취약점이 될 수 있습니다.


유연성


Git의 주요 설계 목표 중 하나는 유연성입니다. Git은 다양한 종류의 비선형 개발 워크플로 지원, 소규모 및 대규모 프로젝트 모두에서의 효율성, 많은 기존 시스템 및 프로토콜과의 호환성 등 여러 측면에서 유연합니다.

Git은 SVN과 달리 1급 시민으로 분기 및 태그 지정을 지원하도록 설계되었으며 분기 및 태그에 영향을 미치는 작업(예: 병합 또는 되돌리기)도 변경 기록의 일부로 저장됩니다. 모든 버전 제어 시스템에 이 수준의 추적 기능이 있는 것은 아닙니다.


Git으로 버전 관리


Git은 오늘날 대부분의 소프트웨어 팀에게 최고의 선택입니다. 팀마다 다르고 자체 분석을 수행해야 하지만 Git을 사용한 버전 제어가 대안보다 선호되는 주요 이유는 다음과 같습니다.

Git에는 대부분의 팀과 개별 개발자가 필요로 하는 기능, 성능, 보안 및 유연성이 있습니다. Git의 이러한 속성은 위에 자세히 설명되어 있습니다. 대부분의 다른 대안과 나란히 비교했을 때 많은 팀에서 Git이 매우 유리하다는 것을 알게 되었습니다.


Git은 사실상의 표준입니다.


Git은 이러한 종류의 도구 중 가장 널리 사용되는 도구입니다. 이것은 다음과 같은 이유로 Git을 매력적으로 만듭니다. Atlassian에서는 거의 모든 프로젝트 소스 코드가 Git에서 관리됩니다.

수많은 개발자가 이미 Git 경험을 갖고 있으며 상당수의 대학 졸업생은 Git만 사용해 본 경험이 있을 수 있습니다. 일부 조직은 다른 버전 제어 시스템에서 Git으로 마이그레이션할 때 학습 곡선을 올라야 할 수 있지만 기존 및 미래 개발자 중 다수는 Git에 대한 교육을 받을 필요가 없습니다.

대규모 인재 풀의 이점 외에도 Git이 우세하다는 것은 IDE, DVCS 데스크톱 클라이언트 Sourcetree , 문제 및 프로젝트 추적 소프트웨어 Jira 와 같은 자체 도구를 비롯한 많은 타사 소프트웨어 도구 및 서비스가 이미 Git과 통합되어 있음을 의미합니다. , 코드 호스팅 서비스 Bitbucket .

소프트웨어 개발 도구에서 가치 있는 기술을 구축하려는 경험이 없는 개발자라면 버전 제어와 관련하여 Git이 목록에 있어야 합니다.


Git은 양질의 오픈 소스 프로젝트입니다.


Git은 10년 이상의 견고한 관리를 통해 매우 잘 지원되는 오픈 소스 프로젝트입니다. 프로젝트 관리자는 유용성과 기능을 개선하는 정기 릴리스를 통해 사용자의 장기적인 요구를 충족시키기 위해 균형 잡힌 판단과 성숙한 접근 방식을 보여주었습니다. 오픈 소스 소프트웨어의 품질은 쉽게 조사되며 수많은 기업이 이 품질에 크게 의존합니다.

Git은 훌륭한 커뮤니티 지원과 방대한 사용자 기반을 즐깁니다. 설명서는 책, 자습서 및 전용 웹 사이트를 포함하여 훌륭하고 풍부합니다. 팟캐스트와 비디오 자습서도 있습니다.

오픈 소스이기 때문에 취미 개발자는 비용을 지불하지 않고 Git을 사용할 수 있으므로 비용이 절감됩니다. 오픈 소스 프로젝트에서 사용하기 위해 Git은 의심할 여지 없이 이전 세대의 성공적인 오픈 소스 버전 제어 시스템인 SVN 및 CVS의 후속 제품입니다.


Git에 대한 비판


Git에 대한 일반적인 비판 중 하나는 배우기 어려울 수 있다는 것입니다. Git의 용어 중 일부는 신규 사용자에게 생소할 것이며 다른 시스템 사용자의 경우 Git 용어가 다를 수 있습니다. 예를 들어 revertGit에서 SVN 또는 CVS에서와 다른 의미를 가집니다. 그럼에도 불구하고 Git은 매우 유능하며 사용자에게 많은 권한을 제공합니다. 그 능력을 사용하는 법을 배우는 것은 시간이 걸릴 수 있지만 일단 배운 후에는 그 능력을 팀에서 사용하여 개발 속도를 높일 수 있습니다.

분산되지 않은 VCS에서 온 팀의 경우 중앙 저장소가 있는 것이 손실을 원하지 않는 좋은 일처럼 보일 수 있습니다. 그러나 Git은 DVCS(분산 버전 제어 시스템)로 설계되었지만 Git을 사용하면 소프트웨어에 대한 모든 변경 사항을 저장해야 하는 공식 정식 저장소를 가질 수 있습니다. Git을 사용하면 각 개발자의 저장소가 완성되기 때문에 "중앙" 서버의 가용성과 성능에 따라 작업을 제한할 필요가 없습니다. 중단 중이나 오프라인 상태에서도 개발자는 전체 프로젝트 기록을 계속 참조할 수 있습니다. Git은 유연하고 배포되기 때문에 익숙한 방식으로 작업할 수 있지만 Git의 추가 이점을 얻을 수 있습니다.

버전 제어가 무엇인지, Git이 무엇인지, 소프트웨어 팀에서 버전 제어를 사용해야 하는 이유를 이해했으므로 Git이 조직 전체에 제공할 수 있는 이점을 알아보세요.