커밋 (버전 관리)

버전 관리 시스템에서 커밋(commit)은 저장소에 소스 코드의 일부의 최신 변경사항을 추가함으로써 이러한 변경사항을 저장소의 최상위 리비전(head revision)의 일부분으로 만들어주는 것을 말한다. 데이터 관리 분야에서의 커밋과 달리 버전 관리 시스템의 커밋은 저장소에 무기한 유지된다. 그러므로 저장소에서 다른 사용자가 update나 checkout을 수행할 때 이들은 저장소 내 소스 코드의 이전 판을 지정하지 않는 한 최신의 커밋된 버전을 수신한다. 버전 관리 시스템을 사용하면 이전 판으로의 롤백을 쉽게 할 수 있다. 이 문맥에서 버전 관리 시스템 내의 커밋은 커밋이 적용된 이후에도 쉬운 롤백과 마찬가지로 보호된다.

버전 관리 시스템의 예로는 CVS나 서브버전(SVN), Git 등이 있다. 비주얼 소스세이프(Visual SourceSafe)에서는 ‘체크인’라고 부른다. 저장소에 커밋하여 저장소에 이미 있는 정보와 업데이트된 파일과의 차이를 취하고 저장소에 업데이트 델타만 업로드 된다. 일반적으로 CVS와 서브버전(SVN)에서는 다른 사용자가 커밋하여 만일 자신이 업데이트한 곳과 동일한 곳에서 충돌이 일어나 다른 사람이 고생하여 업데이트한 정보를 덮어 쓰는 것을 피하기 위해 커밋하기 전에 업데이트(Visual SourceSafe에서 새로 고침라고 부른다)를 실행하여 자신의 작업 영역을 최신 상태로 유지할 수 있다.

사용법

Git 
터미널(macOS)이나 명령 줄 인터페이스(git이 설치되었다고 가정)에서 변경사항을 커밋하려면 다음의 명령을 수행한다:

 git commit -m 'commit message' 

위 명령 실행 전에는 다음처럼 현재 디렉터리 안의 파일들이 다음과 같이 이미 스테이징되어 있다고 가정한다:

 git add . 

위 명령은 작업 디렉터리의 모든 파일이 git 커밋을 위해 스테이징될 수 있도록 추가하는 역할을 한다. 커밋이 적용된 이후 마지막 단계는 지정 소프트웨어 저장소에 해당 커밋을 푸시(push)하는 것이다. 브랜치 master에 origin이라는 이름을 사용할 경우의 예는 다음과 같다:

git push origin master

또, 스테이징되지 않은 모든 파일을 추가하고 동시에 커밋을 수행하는 방법은 다음과 같다:

 git commit -a -m 'commit message'

각주 

버전 관리 시스템