반응형

깃허브에서 commit의 의미를 이해하기 위해서는 스냅샷의 의미를 알아야 한다. 아래는 커밋, 커밋의 구성요소, 스냅샷, 롤백의 의미를 설명한 것이다.

 

목차

스냅샷(snapshot)이란?

커밋(commit)이란?

롤백(roll-back)이란?

커밋의 구조

  커밋 메시지(commit message)

  변경 내용(changes)

  작성자(author)

  작성일(date)

리포지토리(repository)란?

 

스냅샷(snapshot)이란?

스냅샷은 특정 시점의 프로젝트 소스 코드의 특정 버전을 의미한다. 프로젝트에 변경 사항을 저장(commit, 커밋)하면 변경 사항을 포함하여 해당 시점에 프로젝트의 소스 코드 스냅샷이 생성된다. 이러한 스냅샷은 프로젝트의 버전 기록을 형성하며, 프로그래머가 시간의 경과에 따른 코드의 변경 사항을 추적하고 관리할 수 있도록 한다. 필요한 경우 이전 버전으로 되돌릴 수 있도록(roll-back, 롤백) 하기 때문에 버전 관리 프로세스의 중요한 부분이다.

 

커밋(commit)이란?

GitHub에서 커밋은 명사이자 동사인 두 가지 의미를 가진다. 명사로서의 커밋은 스냅샷을 의미한다. 동사로서의 커밋은 저장을 의미한다. 즉, 프로그래머는 커밋(스냅샷)을 커밋(저장)한다. 리포지토리에 변경 내용(스냅샷)을 커밋하면 커밋이 리포지토리의 버전 기록에 추가되고 변경 내용이 영구적으로 적용된다. reset을 이용하여 커밋 자체를 지울 수 있으나, 협업 시 꼬일 수 있어 권장되지 않는다.

전반적으로 커밋은 프로젝트의 소스 코드에 대한 변경 내용을 기록한 것으로, 커밋 메시지, 변경 내용 자체, 작성자, 변경 날짜 및 시간을 포함한다.

롤백(roll-back)이란?

롤백은 프로젝트의 소스 코드에 대한 변경 사항의 실행 취소를 의미한다. 버그가 발생했을 때, 코드에 손상(break)이 발생했을 때 등의 이유로 이전 버전의 코드로 되돌리려는 경우(revert, 리버트)에 유용하다. 롤백은 revert, reset을 이용하여 할 수 있으나 일반적으로 revert를 이용한다. revert란 커밋으로 되돌릴 때 원래 커밋에서 변경한 내용을 취소하는 새 커밋을 만드는 것이다. 커밋 기록 자체를 지우는 것이 아니다.

 

커밋의 구조

커밋 메시지(commit message)

커밋 메시지는 커밋에서 변경된 내용에 대한 간략한 설명이다. 커밋 메시지는 명확하고 이해하기 쉬운 방식으로 작성된 짧고 간결한 변경 사항에 대한 요약이어야 한다. 커밋 메시지는 다른 개발자가 변경한 내용과 변경한 이유를 이해하는 데 도움이 되기 때문에 중요하다. 아래는 star 수가 6,500개 이상 달린 커밋 메시지 가이드이다. 한글 번역도 있으니 시간 날 때 읽어보면 좋을 것이다.

https://github.com/RomuloOliveira/commit-messages-guide

변경 내용(changes)

커밋에는 프로젝트 소스 코드에 대한 변경 내용이 포함된다. 이러한 변경에는 기존 파일의 수정, 새 파일 추가, 파일 삭제가 포함될 수 있다. 변경 사항은 조회 시 줄 단위로 바뀐 부분만을 볼 수 있다.

작성자(author)

커밋에는 변경한 사람의 이름과 이메일이 포함된다. 이를 통해 다른 프로그래머는 누가 변경했는지 확인하고 필요한 경우 연락할 수 있다.

작성일(date)

커밋에는 변경한 날짜와 시간이 포함된다. 이를 통해 언제 변경되었는지 확인하고 프로젝트의 버전 기록을 이해할 수 있다.

 

리포지토리(repository)란?

리포지토리(repository) 또는 리포(repo)란 중앙 저장소에 저장되고 버전 관리 시스템(VCS)인 Git에 의해 관리되는 파일과 폴더의 모음이다. 즉, 버전 관리 시스템(VCS)은 저장소(repository) 또는 리포(repo)라고 불리는 폴더에서 프로젝트의 소스 코드를 관리한다. 리포지토리는 프로젝트의 코드 베이스로 간주된다. 리포지토리에서는 파일을 추가, 편집, 삭제할 수 있으며 코드의 기본 베이스에 영향을 주지 않고 새로운 기능이나 버그 수정을 실험할 수 있는 복사본인 분기(branch)를 만들 수 있다. 리포지토리는 public일 수도 있고 private일 수도 있다. private repo는 초대한 사람에게만 보여진다. 일반적으로 작업 중인 각 프로젝트마다 깃 리포를 개별적으로 유지해야 한다.

 

 

 

반응형

+ Recent posts