Git이란?

Git은 버전 제어에 대한 전 세계 표준이 되었습니다. 그렇다면 정확히 무엇일까요?

Git은 분산 버전 제어 시스템입니다. 즉, 프로젝트의 로컬 복제본이 완전한 버전 제어 리포지토리입니다. 이러한 모든 기능의 로컬 리포지토리 덕분에 오프라인으로 또는 원격으로 쉽게 작업할 수 있습니다. 개발자는 로컬로 작업을 커밋한 다음 리포지토리의 복사본을 서버의 복사본과 동기화합니다. 이 패러다임은 클라이언트가 코드의 새 버전을 만들기 전에 서버와 코드를 동기화해야 하는 중앙 집중식 버전 제어와는 다릅니다.

Git의 유연성과 인기는 모든 팀에게 좋은 선택입니다. 많은 개발자와 대학 졸업생은 이미 Git을 사용하는 방법을 알고 있습니다. Git의 사용자 커뮤니티는 개발자를 교육하는 리소스를 만들었으며 Git의 인기도를 통해 필요할 때 쉽게 도움을 받을 수 있습니다. 거의 모든 개발 환경에는 모든 주요 운영 체제에서 구현된 Git 지원 및 Git 명령줄 도구가 있습니다.

Git 기본 사항

작업이 저장되면 Git에서 커밋을 만듭니다. 커밋은 특정 시점에 모든 파일의 스냅샷. 파일이 한 커밋에서 다음 커밋으로 변경되지 않은 경우 Git은 이전에 저장된 파일을 사용합니다. 이 디자인은 파일의 초기 버전을 저장하고 시간이 지남에 따라 델타 레코드를 유지하는 다른 시스템과 다릅니다.

Linear graph of development in Git

커밋은 다른 커밋에 대한 링크를 만들어 개발 기록의 그래프를 형성합니다. 코드를 이전 커밋으로 되돌리기, 파일이 커밋에서 다음 커밋으로 변경된 방식을 검사하고, 변경된 위치 및 시기와 같은 정보를 검토할 수 있습니다. 커밋은 Git에서 커밋 내용의 고유한 암호화 해시로 식별됩니다. 모든 것이 해시되므로 Git에서 검색하지 않고는 변경하거나 정보를 손실하거나 파일이 손상되는 것은 불가능합니다.

분기

각 개발자는 변경 내용을 자체 로컬 코드 리포지토리에 저장합니다. 결과적으로 동일한 커밋을 기반으로 여러 변경 내용이 있을 수 있습니다. Git에서는 변경 내용을 격리하고 나중에 다시 병합할 수 있는 도구를 제공합니다. 진행 중인 작업을 위한 간단한 포인터인 분기는 이 분리를 관리합니다. 분기에서 만든 작업이 완료되면 팀의 주(또는 트렁크) 분기에 다시 병합될 수 있습니다.

Commits on a branch

파일 및 커밋

Git의 파일은 수정, 스테이징 또는 커밋된 세 가지 상태 중 하나입니다. 파일이 처음 수정되면 변경 내용은 작업 디렉터리에만 존재합니다. 아직 커밋 또는 개발 기록에 속하지 않습니다. 개발자는 커밋에 포함할 변경된 파일을 준비해야 합니다. 준비 영역에는 다음 커밋에 포함할 모든 변경 내용이 포함됩니다. 개발자가 스테이징된 파일에 만족하면 파일은 변경된 내용을 설명하는 메시지와 함께 커밋으로 패키지됩니다. 이 커밋은 개발 기록의 일부가 됩니다.

file_status_lifecycle-2

스테이징을 사용하면 개발자가 커밋에 저장할 파일 변경 내용을 선택하여 큰 변경 내용을 일련의 작은 커밋으로 분할할 수 있습니다. 커밋 범위를 줄이면 커밋 기록을 검토하여 특정 파일 변경 내용을 쉽게 찾을 수 있습니다.

Git의 이점

Git의 이점은 많습니다.

동시 개발

모든 사용자는 고유한 로컬 코드 복사본을 가지고 있으며 자체 분기에서 동시에 작업할 수 있습니다. Git은 거의 모든 작업이 로컬이므로 오프라인으로 작동합니다.

더 빠른 릴리스

분기를 사용하면 유연하고 동시에 개발할 수 있습니다. 기본 분기에는 릴리스할 안정적인 고품질 코드가 포함되어 있습니다. 기능 분기는 진행 중인 작업을 포함하며 완료 시 기본 분기에 병합됩니다. 릴리스 분기를 진행 중인 개발과 분리하면 안정적인 코드를 관리하고 업데이트를 더 빠르게 배송하는 것이 더 쉽습니다.

기본 제공 통합

인기도 때문에 Git은 대부분의 도구와 제품에 통합됩니다. 모든 주요 IDE에는 기본 제공 Git 지원이 있으며, 많은 도구는 Git와의 연속 통합, 지속적인 배포, 자동화된 테스트, 작업 항목 추적, 메트릭 및 보고 기능 통합을 지원합니다. 이 통합은 일상적인 워크플로를 간소화합니다.

강력한 커뮤니티 지원

Git은 오픈 소스이며 버전 제어의 사실상 표준이 되었습니다. 팀이 활용할 수 있는 도구와 리소스는 부족하지 않습니다. 다른 버전 제어 시스템에 비해 Git에 대한 커뮤니티 지원 볼륨을 사용하면 필요할 때 쉽게 도움을 받을 수 있습니다.

Git은 모든 팀과 함께 작동합니다.

소스 코드 관리 도구와 함께 Git을 사용하면 협업을 장려하고, 정책을 적용하고, 프로세스를 자동화하고, 작업의 가시성과 추적 가능성을 개선하여 팀의 생산성을 향상합니다. 팀은 버전 제어, 작업 항목 추적 및 지속적인 통합 및 배포를 위한 개별 도구에 정착할 수 있습니다. 또는 이러한 모든 작업을 한 곳에서 지원하는 GitHub 또는 Azure DevOps와 같은 솔루션을 선택할 수 있습니다.

끌어오기 요청

끌어오기 요청을 사용하여 기본 분기에 병합하기 전에 팀과 코드 변경 내용을 논의합니다. 끌어오기 요청의 토론은 코드 품질을 보장하고 팀 전체에서 지식을 향상시키는 데 매우 중요합니다. GitHub 및 Azure DevOps와 같은 플랫폼은 개발자가 파일 변경 내용을 찾아보고, 메모를 남기고, 커밋을 검사하고, 빌드를 보고, 코드를 승인하도록 투표할 수 있는 풍부한 끌어오기 요청 환경을 제공합니다.

분기 정책

Teams는 팀 전체에서 일관된 워크플로 및 프로세스를 적용하도록 GitHub 및 Azure DevOps를 구성할 수 있습니다. 끌어오기 요청이 완료되기 전에 요구 사항을 충족하도록 분기 정책을 설정할 수 있습니다. 분기 정책은 직접 푸시를 방지하고, 검토자를 요구하며, 클린 빌드를 보장하여 중요한 분기를 보호합니다.

다음 단계

Git 설치 및 설정