Git을 활용한 협업에서는 브랜치 관리뿐만 아니라 원격 저장소와의 동기화, 코드 변경 추적, 롤백 기능이 중요합니다.
이번 글에서는 Git 협업에서 꼭 알아야 할 커맨드 3가지를 정리해보겠습니다.
git fetch: 원격 저장소의 최신 변경 사항 가져오기
git fetch란?
- 원격 저장소(remote)의 최신 변경 사항을 가져오기만 하는 명령어
- 로컬 브랜치에는 영향을 주지 않음
- git pull과 다르게 병합(merge)까지 자동으로 진행되지 않음
사용 예시
먼저 원격 저장소의 최신 커밋을 가져오려면 아래 명령어를 실행합니다.
git fetch origin
- origin은 기본 원격 저장소 이름입니다.
- 이 명령어를 실행하면 원격 저장소의 최신 상태가 로컬에 다운로드되지만, 직접 코드에는 반영되지 않습니다.
git fetch 후 최신 상태 확인
원격 브랜치의 상태를 확인하려면 다음 명령어를 사용합니다.
git branch -r
-r 옵션을 추가하면 원격 브랜치 목록을 볼 수 있습니다.
주의할 점:
- git fetch를 실행해도 기존 브랜치가 업데이트되지 않습니다.
- 가져온 최신 변경 사항을 로컬 브랜치에 반영하려면 git merge를 해야 합니다.
만약 원격 저장소의 최신 상태를 바로 로컬에 반영하고 싶다면?
git pull origin main
이렇게 하면 git fetch + git merge가 한 번에 실행됩니다!
git blame: 파일의 변경 내역 추적
git blame이란?
- 특정 파일의 각 줄이 언제, 누가, 어떤 커밋에서 변경했는지 확인하는 명령어
- 코드 변경 히스토리를 추적하는 데 유용
사용 예시
git blame example.py
이렇게 실행하면 example.py의 각 줄이 어떤 커밋에서 추가/수정되었는지 표시됩니다.
출력 예시:
1a2b3c4d (Alice 2024-03-21 12:45:23) def add(a, b):
3e4f5g6h (Bob 2024-03-22 14:10:55) return a + b
첫 번째 열: 커밋 ID
두 번째 열: 수정한 사람 (Author)
세 번째 열: 수정 날짜
네 번째 열: 코드 내용
언제 유용할까?
- 특정 코드가 언제, 왜, 누가 추가했는지 알고 싶을 때
- 코드 리뷰 중 특정 변경 사항의 이력을 추적하고 싶을 때
특정 줄 범위만 보고 싶다면?
git blame -L 10,20 example.py
10~20번째 줄에 대한 정보만 출력됩니다.
git revert: 안전한 롤백
git revert란?
- 특정 커밋에서 이루어진 변경 사항을 되돌리는 새로운 커밋을 생성
- 기존 커밋 히스토리는 유지하면서 변경 사항만 취소
git reset과의 차이점?
- git reset은 커밋 자체를 삭제하여 히스토리가 변경됨 ⚠️
- git revert는 되돌리는 새로운 커밋을 생성하여 히스토리를 유지 ✅
사용 예시
git revert <커밋 ID>
- 해당 커밋에서 이루어진 변경 사항이 취소된 새로운 커밋이 생성됨.
예를 들어, 다음처럼 실행하면 특정 커밋을 되돌릴 수 있습니다.
git revert 1a2b3c4d
✔ 변경 사항이 취소되었지만, 히스토리는 남아 있음!
여러 개의 커밋을 한 번에 되돌리려면?
git revert -n HEAD~3..HEAD
- 마지막 3개의 커밋을 한 번에 되돌림
- -n 옵션을 추가하면 변경 사항을 스테이징 영역에만 반영하고, 직접 git commit할 수 있음
언제 사용할까?
- 실수로 잘못된 커밋을 했지만 팀원과 공유된 히스토리를 변경하고 싶지 않을 때
- 특정 기능을 제거해야 하지만, 다른 커밋은 유지해야 할 때
정리: Git 협업을 위한 필수 커맨드
마무리
이번 글에서는 Git 협업에서 꼭 알아야 할 git fetch, git blame, git revert 명령어를 정리했습니다.
- 원격 저장소와의 동기화를 관리할 때는 git fetch
- 코드 변경 내역을 추적하고 싶다면 git blame
- 실수를 되돌리되 히스토리는 유지하고 싶다면 git revert
이제 실무에서 Git을 더 효과적으로 활용할 수 있겠죠?
'Data-Driven System Development > Git' 카테고리의 다른 글
Git --graph로 커밋 히스토리를 시각적으로 확인하기 (0) | 2025.03.26 |
---|---|
되돌아가고 싶을 땐 git reflog (0) | 2025.03.23 |
Git Merge의 동작 원리 완벽 이해하기 (0) | 2025.03.21 |
Git Reset과 Checkout의 동작 원리 완벽 이해하기 (0) | 2025.03.21 |
Git Reset의 동작 원리 완벽 이해 (0) | 2025.03.21 |