Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 90
  • 2586315
DNS Powered by DNSEver.com
일반

[GIT] 로컬 저장소 정보 조회하기: status, show, log, diff, blame

Posted 2014. 10. 23 Updated 2017. 06. 02 Views 7218 Replies 0
Atachment
첨부

로컬 저장소 정보를 조회해서 현재 작업 진행 상태를 파악하고, 이전 Commit을 작성한 개발자들이 남겨놓은 Log를 확인하는 등의 작업을 할 수 있습니다.

GIT에는 기본적으로 서로 다른 두 버전의 소스코드를 비교하는 강력한 Diff툴을 제공하기 때문에 이를 이용하여 특정 Commit에서 정확히 어떤 부분의 소스코드를 어떻게 변경했는지 추적할 수 있습니다.


현재 상태 보기 - status

현재 Branch와 Stage 정보를 보여줍니다.

git status


Commit 정보 보기 - show

다음과 같이 입력하면 가장 최근 Commit의 Log와 변경사항을 보여줍니다.

git show

Commit ID를 명시하면 특정 Commit의 Log와 변경사항을 볼 수 있습니다.

git show {Commit ID}


Commit Log 보기 - log

다음과 같이 입력하면 가장 최근 Commit의 Log를 볼 수 있습니다..

git log

Commit ID를 명시하면 특정 Commit의 Log를 볼 수 있습니다.

git log {Commit ID}

--stat 옵션을 추가하면 Commit에서 수행한 첨삭 통계(+/-)를 함께 볼 수 있습니다.

git log --stat

Commit Network 보기: --graph 옵션

--graph 옵션을 추가하면 그래프 형태로 나타낸 Commit Log를 볼 수 있습니다.

여기에 추가적으로 사용 가능한 유용한 옵션들을 보면 다음과 같습니다.

--pretty=oneline : 각 Commit을 제목만 한 줄로 표시합니다.
--abbrev-commit : Commit ID를 앞 6자리만 표시합니다.
--decorate : Commit 제목 앞에 Branch/Head 정보를 함께 표시합니다.
--all : 현재 Branch뿐만 아니라, 다른 Branch들의 Commit들도 함께 표시합니다.

다음은 위 옵션의 모든 조합을 포함한 명령어와 그 실행 결과의 예시를 보여줍니다.
(Console에서 저렇게 어떻게든 Tree를 그려보려고 고군분투했을 개발자에게 심심한 위로를...)

git log --graph --pretty=oneline --abbrev-commit --all --decorate

commit_network.png


Commit 비교하기 - diff

다음과 같이 입력하면 Stage되지 않은 변경사항과 HEAD를 비교하여 보여줍니다.

git diff

서로 다른 두 Commit을 비교할 수도 있습니다. 다음 명령어는 Target Commit에서 Dest Commit으로 바꾸기 위한 변경 사항을 보여줍니다.

git diff {Target Commit ID} {Dest Commit ID}


책임 추궁하기(?) - blame

GIT에는 blame이라는 다소 특이하기도 하고, 개발자 입장에서는 조금 기분이 상할 수도 있는(?) 기능이 내장되어 있습니다.

blame은 소스코드의 라인 단위로 해당 라인을 누가 수정했는지를 추적하는 유용한 기능을 제공합니다.

git blame -L {시작줄 번호},{끝줄 번호} {대상 파일}

예를 들어, 다음 명령어는 Makefile의 15~19번째 줄을 누가 작성했는지 추적하고자 할 때 사용합니다.

git blame -L 15,19 Makefile

개발자 이름 대신 이메일 주소를 얻고 싶다면, -e 옵션을 추가하면 됩니다.

대규모 프로젝트의 경우 원격 저장소에 Push 이벤트가 발생하면 수정된 전체 소스코드를 지속적으로 다시 빌드하는 '빌드 자동화 시스템'을 함께 운용합니다. 작성한 소스코드에 문제가 있다면 가급적 빨리 발견하고 수정해야 시간과 비용이 덜 들기 때문입니다.

빌드 자동화 시스템은 빌드가 실패하면 로그를 통해 문제가 발생한 위치와 오류 메시지를 수집하고, blame 명령어로 해당 부분을 작성한 개발자를 추적하여 자동적으로 이메일을 발송합니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE

List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
59 일반 [Make 튜토리얼] Makefile 예제와 작성 방법 및 기본 패턴 2 file TUW 2018.11.21 235956
58 일반 [CMake 튜토리얼] 2. CMakeLists.txt 주요 명령과 변수 정리 1 file TUW 2019.10.02 181472
57 일반 [CMake 튜토리얼] 1. CMake 소개와 예제, 내부 동작 원리 file TUW 2018.06.13 167290
56 일반 영어로 나타낸 수학 용어 모음 2 file TUW 2018.01.08 82920
55 일반 [Windows] 다중 NIC(LAN카드) 환경에서 Routing Table 설정 - route 명령 2 file TUW 2019.10.21 73044
54 일반 [GIT] 실행취소와 Commit 삭제: reflog, reset, checkout, revert TUW 2019.04.28 64611
53 일반 Windows에서 포트 포워딩(Port Forwarding) 설정하기 - Netsh TUW 2018.02.03 62086
52 일반 File Object (<input type='file' />)에 대하여 2 file TUW 2017.06.02 51422
51 일반 [CMake 튜토리얼] 3. CMakeLists.txt 기본 패턴 5 TUW 2019.08.19 49098
50 일반 [GIT] Branch 관리하기: branch, checkout, push, pull 2 TUW 2018.02.03 48396
49 일반 신호 레벨 변환 회로(Level Transceiver/Translator/Shifter) 설계 file TUW 2021.12.28 48070
48 일반 Windows 7에서 보호된 노트북 복구파티션 삭제하기 file TUW 2017.06.02 44087
47 일반 [WSL] Windows Subsystem for Linux - SSH 서버 세팅하기 file TUW 2021.12.28 43300
46 일반 [포토샵] 사진 가장자리 투명하게 처리하기 file TUW 2017.06.02 42378
45 일반 [GIT] Patch 만들기 및 적용하기: format-patch, am TUW 2015.01.10 41059
44 일반 [사설 클라우드 구축] 자동 동기화 설정 (FreeFileSync) 2 file TUW 2017.06.02 39095
목록
Board Pagination Prev 1 2 3 4 Next
/ 4

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5