Git을 사용할 때, 프로젝트의 히스토리를 이해하는 것은 변경 사항을 추적하고, 문제를 디버깅하며, 다른 개발자와 협업하는 데 필수적입니다. Git은 git log
라는 강력한 명령어를 제공하여 다양한 방식으로 커밋 히스토리를 확인할 수 있게 해줍니다. 이번 글에서는 다양한 git log
옵션을 살펴보고, Git 히스토리를 최대한 활용할 수 있는 방법을 알아보겠습니다. 각 명령어와 함께 실제 Bash 결과 예시를 포함하여 설명하겠습니다.
1. 기본 커밋 히스토리: git log
가장 기본적인 방법으로 커밋 히스토리를 확인하려면 git log
명령어를 사용합니다. 이 명령어는 현재 브랜치의 모든 커밋을 시간순으로 나열하며, 각 커밋의 해시, 작성자, 날짜, 커밋 메시지 등의 중요한 정보를 제공합니다.
git log
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Aug 25 10:58:59 2024 +0900
사용자 로그인 기능 추가
commit 3a57b4f72d3e45787678a6379c980b17b9b5c9f9
Author: Jane Smith <jane@example.com>
Date: Tue Aug 24 14:43:12 2024 +0900
결제 처리 버그 수정
이 명령어는 프로젝트 히스토리를 종합적으로 살펴볼 때 유용하지만, 큰 프로젝트에서는 출력이 다소 방대할 수 있습니다.
2. 한 줄 요약: git log --oneline
더 간결한 출력을 원한다면 git log --oneline
명령어를 사용하세요. 이 명령어는 각 커밋을 한 줄로 요약하여 커밋 해시와 메시지 타이틀만 표시합니다. 프로젝트 히스토리를 빠르게 살펴보고 싶을 때 유용합니다.
git log --oneline
예시 결과:
9fceb02 사용자 로그인 기능 추가
3a57b4f 결제 처리 버그 수정
이 출력은 특정 커밋을 빠르게 찾고자 할 때 특히 유용합니다.
3. 상세 변경 사항: git log -p
각 커밋에서 정확히 어떤 변경이 이루어졌는지 확인하고 싶다면 git log -p
명령어를 사용하세요. 이 명령어는 각 커밋에 대한 diff(패치) 정보를 포함하여 파일의 변경 사항을 보여줍니다.
git log -p
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Aug 25 10:58:59 2024 +0900
사용자 로그인 기능 추가
diff --git a/app/models/user.rb b/app/models/user.rb
index 8a6b99f..35d5e34 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,4 +1,6 @@
class User < ApplicationRecord
+ # 추가된 로그인 기능
def login
+ # 로그인 로직
end
end
코드 리뷰를 하거나 특정 기능이나 버그 수정을 이해하려고 할 때 매우 유용합니다.
4. 커밋 그래프 시각화: git log --graph
브랜칭과 머지 히스토리를 이해하는 것은 복잡한 프로젝트에서 특히 어렵습니다. git log --graph
명령어는 커밋 히스토리를 그래프로 시각화하여 브랜치가 어떻게 분기하고 합쳐지는지 보여줍니다.
git log --graph
예시 결과:
* commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
| Author: Hong gil dong <hong@example.com>
| Date: Wed Aug 25 10:58:59 2024 +0900
|
| 사용자 로그인 기능 추가
|
* commit 3a57b4f72d3e45787678a6379c980b17b9b5c9f9
Author: Jane Smith <jane@example.com>
Date: Tue Aug 24 14:43:12 2024 +0900
결제 처리 버그 수정
이 명령어를 --oneline
옵션과 함께 사용하면 브랜치 구조를 명확하고 간결하게 볼 수 있습니다.
git log --graph --oneline
예시 결과:
* 9fceb02 사용자 로그인 기능 추가
* 3a57b4f 결제 처리 버그 수정
5. 파일 변경 통계: git log --stat
각 커밋이 프로젝트의 파일들에 어떤 영향을 미쳤는지 알고 싶다면 git log --stat
명령어를 사용하세요. 이 명령어는 각 커밋에서 변경된 파일들과 함께 추가된 줄, 삭제된 줄의 수를 요약하여 보여줍니다.
git log --stat
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Aug 25 10:58:59 2024 +0900
사용자 로그인 기능 추가
app/models/user.rb | 3 +++
1 file changed, 3 insertions(+)
commit 3a57b4f72d3e45787678a6379c980b17b9b5c9f9
Author: Jane Smith <jane@example.com>
Date: Tue Aug 24 14:43:12 2024 +0900
결제 처리 버그 수정
app/controllers/payments_controller.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
전체적인 변경 범위를 이해하고자 할 때 유용합니다.
6. 작성자로 필터링: git log --author="Hong gil dong"
협업 프로젝트에서 특정 개발자가 만든 커밋만 보고 싶다면 git log --author="Hong gil dong"
명령어를 사용해보세요. 이 명령어는 지정된 작성자의 커밋만 필터링하여 보여줍니다.
git log --author="Hong gil dong"
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Aug 25 10:58:59 2024 +0900
사용자 로그인 기능 추가
코드 리뷰, 성과 추적, 팀원들의 기여를 이해할 때 유용합니다.
7. 날짜로 필터링: git log --since
및 git log --until
때때로 특정 기간 동안의 변경 사항에 집중하고 싶을 때가 있습니다. git log --since
및 git log --until
옵션을 사용하면 날짜를 기준으로 커밋을 필터링할 수 있습니다.
git log --since="2024-01-01" --until="2024-01-31"
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Jan 15 10:58:59 2024 +0900
사용자 로그인 기능 추가
이 명령어는 2024년 1월 동안 생성된 모든 커밋을 보여주며, 특정 기간의 프로젝트 히스토리에 집중하는 데 도움이 됩니다.
8. 커밋 메시지 검색: git log --grep
특정 기능이나 버그와 관련된 커밋을 찾기 위해 커밋 메시지를 검색할 수 있습니다. git log --grep
옵션을 사용하면 지정된 키워드를 포함한 커밋만 히스토리에서 보여줍니다.
git log --grep="로그인"
예시 결과:
commit 9fceb02d0ae598e450a69a3f6a1b8a2f13b7e4d1
Author: Hong gil dong <hong@example.com>
Date: Wed Aug 25 10:58:59 2024 +0900
사용자
로그인 기능 추가
특정 문제나 기능과 관련된 커밋을 빠르게 찾는 데 유용합니다.
9. 결론
git log
명령어를 잘 활용하는 것은 Git을 사용하는 개발자에게 필수적입니다. 기본 커밋 히스토리, 상세 변경 사항, 작성자 또는 날짜별 필터링, 키워드 검색 등 다양한 옵션을 결합하여 자신의 필요에 맞게 명령어를 조정하면 프로젝트 히스토리를 효과적으로 탐색할 수 있습니다. 위에서 소개한 예시와 함께 git log
를 직접 사용해보면서 그 유용성을 체험해보세요.
10. 참고 자료
'개발 분야 (Development Area)' 카테고리의 다른 글
[번역] TikTok이 Sparo를 사용하여 20만 개 파일이 있는 모노레포를 관리하는 방법 (13) | 2024.10.09 |
---|