Git이란 무엇인가?
•
Git은 DVCS로 프로젝트의 로컬 복제본이 완전한 버전 제어 레포지토리이다.
•
이러한 모든 기능의 로컬 레포지토리 덕분에 원격으로 쉽게 작업할 수 있다.
•
개발자는 로컬로 작업을 커밋한 다음 레포지터리의 복사본을 서버의 복사본과 동기화한다.
•
주로 여러 개발자가 하나의 소프트웨어 개발 프로젝트를 진행할 때, 소스 코드를 관리하는 데 사용된다.
Git 기본 사항
•
작업이 저장되면 Git에서 커밋은 생성한다.
•
커밋은 모든 파일의 특정 시점의 스냅샷으로 파일이 한 커밋에서 다음 커밋으로 변경되지 않는 경우에는 이전에 젖아된 파일을 사용한다.
•
이 디자인은 파일의 초기 버전을 저장하고 시간이 지남에 따라 델타 레코드를 유지하는 다른 시스템과 다르다.
•
커밋은 다른 커밋에 대한 연결을 생성하여 개발 기록의 그래프를 형성하여 이전 커밋으로 되돌리기, 파일이 커밋에서 다음 커밋으로 변경된 내용, 위치 및 시기와 같은 정보를 확인할 수 있다.
•
커밋은 Git에서 커밋 내용의 고유한 암호화 해시로 식별되는데, 모든 것이 해시되므로 Git에서는 검색하지 않고는 변경하거나 정보가 손실되는 것은 불가능하다.
분기
•
각 개발자는 변경 내용을 각자의 컴퓨터의 로컬 레포지터리에 저장한다.
•
결과적으로 특정 시점에 대한 파일 스냅샷에 대해서 여러 변경 내용이 있을 수 있다. Git에서는 변경 내용을 격리하고 나중에 다시 병합할 수 있는 도구를 제공한다.
•
진행 중인 작업을 위한 간단한 포인터인 분기는 이 분리를 관리한다. 분기에서 만든 작업이 완료되면 팀의 메인 분기에 다시 병합될 수 있다.
파일 및 커밋
•
Git의 파일은 수정, 스테이징 또는 커밋되어있는 세 상태 중 하나이다.
•
파일이 처음 수정되면 변경 내용은 로컬의 작업 디렉토리에만 존재한다.
•
개발자는 커밋에 포함할 변경된 파일을 준비해야 한다. 준비 영역에는 다음 커밋에 포함할 모든 변경 내용이 포함된다.
•
개발자가 스테이징된 파일에 만족하면 파일은 변경된 내용을 설명하는 메시지와 함께 커밋으로 패키징된다. 이 커밋은 개발 기록의 일부가 된다.
•
스테이징을 사용하면 개발자가 커밋에 저장한 파일 변경 내용을 선택하여 큰 변경 내용을 일련의 작은 커밋으로 분리할 수 있다.
◦
커밋 사이즈를 줄이면 커밋 기록을 검토하여 특정 파일의 변경 내용을 쉽게 확인할 수 있다.
장점
•
동시 개발
◦
모든 개발자는 고유한 로컬 코드 레포지터리를 소유하고 있으며 메인 분기에서 작업이 가능하다.
◦
Git은 거의 모든 작업이 로컬이므로 오프라인으로 동작한다.
•
통합
◦
Git은 대부분의 도구와 제품에 기본 제공된다.
◦
모든 주요 IDE에는 Git이 기본적으로 지원되며 많은 도구는 CI, CD, 테스트 자동화, 작업 항목 추적, 지표 및 보고 기능 통합을 지원한다.
•
강력한 커뮤니티 지원
•
풀 리퀘스트
◦
풀 리퀘스트를 통해 메인 브랜치에 머지하기 전에 팀과 코드 변경 내용을 논의할 수 있다.
◦
풀 리퀘스트에서 일어나는 토론은 품지을 보장하고 기술이 전파되는 데 기여한다.
◦
GitHub에서 우리는 개발자가 파일 변경 내용을 찾아보고 커밋을 검사하고 메모를 남고기 빌드를 보고 코드를 승인할수록 투표할 수 있는 환경을 제공한다.