[Git] 커밋에 대하여

커밋에 대하여 알아보자


커밋의 원자성

커밋은 Git에서 가장 기본적인 작업 단위이다. 좋은 커밋은 하나의 기능만 담고 있는 것이다. 이것이 바로 커밋의 원자성이다.

원자성을 유지하는 것은 코드 관리에 있어 매우 중요한 원칙이다. 한 커밋에 여러 기능이 섞여 있으면 나중에 특정 기능만 되돌리거나 수정하기 어렵기 때문이다.

여기서 주의할 점은 원자성이 한 파일을 의미하는 것이 아니라 한 기능을 의미한다는 것이다. 하나의 기능 구현을 위해 여러 파일을 수정해야 할 수도 있다. 이 경우 모든 관련 파일을 하나의 커밋으로 묶는 것이 올바른 방법이다.


커밋 메시지

커밋 메시지는 변경 사항을 명확하게 설명하는 중요한 요소이다. Git 공식 문서에서는 커밋 메시지를 현재시제 명령형으로 작성하는 것을 권장하고 있다.

예를 들면 Fixed bug가 아닌 Fix bug와 같은 형태로 작성하는 것이다. 하지만 이는 단지 관례일 뿐이다. 반드시 이 형식을 따를 필요는 없다.

가장 중요한 것은 프로젝트 내에서 일관성 있는 규칙을 정하고 이를 지키는 것이다. 팀원들과 합의된 규칙에 따라 커밋 메시지를 작성하면 어떤 형식이든 상관없다.


커밋 로그

git log 명령어는 커밋 내역을 확인할 수 있는 유용한 도구이다. 이 명령어를 실행하면 각 커밋의 해시값, 작성자, 날짜, 메시지 등 상세한 정보가 표시된다.

더 간결하게 보고 싶다면 git log --oneline 옵션을 사용하는 것이 좋다. 이 옵션을 사용하면 짧은 해시값과 함께 각 커밋 정보가 한 줄로 깔끔하게 표시된다.

a1b2c3d Fix navigation bar
e4f5g6h Add user authentication
i7j8k9l Update README.md

이런 식으로 표시되어 커밋 히스토리를 빠르게 훑어볼 수 있다.


실수한 커밋 수정하기

커밋을 한 후에 실수를 발견하는 경우가 종종 있다. 예를 들어, 한 커밋으로 묶어야 할 파일을 하나 빼먹고 커밋했을 때는 어떻게 해야 할까?

이런 경우에는 빼먹은 파일을 git add로 Staging Area에 추가한 다음, git commit --amend 명령어를 사용하면 된다. 이 옵션은 최근 커밋을 새로운 커밋으로 대체하는 기능을 한다.

--amend 옵션은 커밋 메시지도 수정할 수 있게 해준다. 따라서 오타가 있거나 잘못된 커밋 메시지를 수정할 때도 유용하게 사용할 수 있다.

git add 빼먹은_파일.txt
git commit --amend

이 명령어를 실행하면 텍스트 에디터가 열리고 커밋 메시지를 수정할 수 있다. 메시지를 수정하지 않고 그대로 저장하면 파일만 추가된다.


특정 파일 추적 무시하기

프로젝트를 진행하다 보면 Git으로 관리하지 않아야 하는 파일들이 있다. 예를 들어, API 키가 포함된 설정 파일, 로그 파일, 빌드 결과물, 의존성 패키지 등이 그렇다.

이런 파일들을 Git이 무시하도록 설정하는 방법은 .gitignore 파일을 사용하는 것이다. 프로젝트 루트 디렉토리에 이 파일을 생성하고, 무시할 파일 패턴을 작성하면 된다.

.gitignore
# 특정 파일 무시
secrets.txt
config.json
 
# 특정 확장자 무시
*.log
*.tmp
 
# 특정 디렉토리 무시
node_modules/
dist/
build/
 
# 시스템 파일 무시
.DS_Store
Thumbs.db

이렇게 설정하면 Git은 해당 패턴에 맞는 파일들을 추적하지 않는다. 이는 민감한 정보가 실수로 공개되는 것을 방지하고, 저장소 크기를 관리하는 데 도움이 된다.


마치며

커밋은 Git의 핵심 개념이다. 원자적인 커밋, 명확한 커밋 메시지, 그리고 적절한 파일 관리는 효율적인 버전 관리의 기본이다. 이러한 원칙을 지키면서 Git을 사용하면 프로젝트를 더 체계적으로 관리할 수 있다.