1. 변경 이력 확인
Git은 모든 커밋을 이력으로 관리하여, 과거의 변경 사항을 쉽게 추적할 수 있습니다.
이력 확인 명령어를 사용하면 프로젝트가 어떻게 발전했는지, 누가 어떤 변경을 했는지 알 수 있습니다.
# 변경 이력 확인
# 저장소의 변경 이력을 확인합니다.
git log
# 브랜치의 연결을 가시적으로 표시한 변경 이력
git log --graph
# 간략한 커밋 이력 확인
git log --oneline
# 변경 이력과 함께 차이점 표시(끌 때는 q)
git log -p
# 특정 파일의 변경 이력 확인
git log -- <파일명>
# Git에서 특정 버전의 특정 파일 내용 확인하기
# [버전] → 확인하려는 특정 버전을 나타내는 커밋 해시, 브랜치 이름(최신버전), 태그 등을 사용
# [파일경로] → 해당 파일의 상대 또는 절대 경로 지정
git show [버전]:[파일경로]
# 커밋 작성자, 작성 날짜,
# diff → 커밋에서의 수정 작업 표시
git show [커밋 해시]
# 해당 커밋에서의 파일 상태 출력
git show [커밋 해시]:[파일경로]
# 해당 브랜치의 commit 이력 출력
git show [브랜치명]
* commit 해시 값 → 고유 식별 번호 (앞의 6글자만 사용해도 식별 가능)

2. 변경 사항 비교
Git은 현재 파일 상태나 특정 커밋 사이의 차이를 비교하여 변경 내용을 시각적으로 제공합니다.
# Working Tree와 Staging Area의 차이 비교
git diff
# Staging Area와 커밋된 상태 비교
git diff --staged
# 특정 커밋과 비교
git diff <커밋해시>
변경 사항 비교 활용 예시
- 기능 추가 후 테스트: 기능을 추가한 후 변경된 코드가 의도한 대로 작동하는지 확인합니다.
- 리팩토링 검토: 리팩토링 후 변경된 코드가 기존 기능에 영향을 주지 않았는지 점검합니다.
3. 특정 버전으로 되돌리기
작업 도중 문제가 발생했을 때 이전 상태로 되돌릴 수 있습니다.
Git은 다양한 방식으로 버전 되돌리기를 지원합니다.
# 특정 커밋으로 이동 (작업 디렉토리 상태만 변경)
git checkout <커밋해시>
# 가장 최근 커밋을 되돌리기 (변경 사항 유지)
git reset --soft HEAD~1
# 특정 커밋으로 되돌리고 이후 변경 사항 제거
git reset --hard <커밋해시>
# 변경 기록을 유지한 채로 이전 상태로 복구
git revert <커밋해시>
각 명령어 차이
- checkout: 작업 디렉토리만 이동하며 변경 이력을 유지합니다.
- reset: 커밋 기록을 되돌립니다. --soft는 변경 사항을 유지하며, --hard는 모두 삭제합니다.
- revert: 새로운 커밋을 생성하여 변경 내용을 되돌립니다. 협업 시 안전하게 되돌리기 위해 주로 사용합니다.
4. 복구 및 충돌 해결
Git에서 작업 도중 발생하는 문제(예: 충돌, 임시 변경 사항)를 효과적으로 복구하고 해결할 수 있습니다.
# 임시로 변경 사항 저장 (Stash)
git stash
# 저장된 변경 사항 목록 확인
git stash list
# 임시 저장된 변경 사항 복원
git stash apply
# 병합 충돌 해결 후 변경 사항 커밋
git add <파일명>
git commit
충돌 상황 해결 과정
- 충돌이 발생하면 Git이 충돌 파일을 표시합니다.
- 파일을 열어 충돌된 부분을 수정합니다.
- 수정이 완료되면 git add 명령어로 변경 사항을 Staging Area에 추가한 후 커밋합니다.
5. 문제 해결 및 실무 적용 사례
문제 상황 예시
- 버그가 발생한 커밋 되돌리기: 특정 커밋이 문제를 일으킨 경우, 해당 커밋을 git revert로 되돌립니다.
- 이전 작업 상태 복원: 작업 도중 실수로 파일을 변경했을 때 git stash로 저장한 상태를 복원합니다.
- 충돌 해결 실습: 두 브랜치에서 동일한 파일을 수정한 후 병합 시 충돌을 해결하는 과정을 연습합니다.
Best Practice
- 커밋 단위를 명확히 분리하여 변경 이력을 이해하기 쉽게 유지합니다.
- 협업 시에는 git revert를 사용해 변경 사항을 되돌리는 것이 권장됩니다.
- 충돌 발생 시 팀원들과 소통하여 변경 의도를 명확히 합니다.
마무리
실무에서 실수 없이 github를 활용하도록 연습합시다
'study > Git&Github' 카테고리의 다른 글
| [Git & GitHub] - 트러블 슈팅과 실무 활용 (0) | 2025.02.07 |
|---|---|
| [Git & GitHub] - 협업과 보안 설정 (1) | 2025.02.06 |
| [Git & GitHub] - Github 협업 기능 이해 및 활용 (1) | 2025.02.04 |
| [Git & GitHub] - Fork & Pull Request (1) | 2025.02.04 |
| [Git & GitHub] - GitHub 기초 (0) | 2025.02.03 |