[Git] 작업중인 Repository History 분석

2024. 4. 2. 21:23Developers 공간 [Shorts]/Software Basic

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

Git으로 작업된 Repository가 주어진 경우, 해당 Repository에 대해 아래와 같이 궁금한 것들이 생깁니다.

  • 해당 Repository가 어떤 순서로 작업되었는지
  • 어떤 Branch가 어디로부터 분리되었는지
  • Commit마다 어떤 정보가 어떻게 업데이트 되었는지

Github에서 혹은 git명령어를 통해 이런 것들을 살펴본 것들을 정리하고자 합니다.

 

아래에서 사용할 용어에 대해 편의상 아래와 같이 약자를 만들어 설명하고자합니다.

  • WD : Working Directory, 현재 작업중인 폴더를 의미합니다. 
  • SA : Staging Area, 현재 git add 명령어로 업데이트 커밋이 올라가 있는 공간
  • LR : Local Repository, git commit 명령어로 현재 commit이 모여있는 Local 저장소
  • RR : Remote Repository, git push 명령어로 commit이 모여있는 Remote 저장소, github와 같습니다.

2. Why? (원인)

  • X

3. How? (해결책)

 

1. RR에서 Branch와 Commit들을 확인하기

 

아래 그림과 같이 github 웹페이지에서 직접 branch와 commit들을 직접확인할 수 있습니다. 이들은 RR 저장소에서의 Commit과 Branch들을 의미합니다.

[github에서 Branch와 Commit의 History살펴보기]

 

2. Local (WD,SA,LR) 에서 비교/확인하기

 

git diff 명령어를 통해 branch간 혹은 commit 간의 비교를 할 수 있습니다. git diff는 어떤 경우에 사용하는지 간단히 보겠습니다.

 

- WD ⬌ SA : 현재 작업중인 Working Directorystaging된 파일들을 비교합니다.

git diff

- WD,SA ⬌ SA : 현재 작업중인 폴더와 staging된 파일들Local 저장소의 HEAD commit과 비교하기 위해 사용합니다.

git diff HEAD : 이 명령어는

- SA ⬌LR Head Commit : 현재 staging된 파일들Local 저장소의 HEAD commit과의 비교를 위해 사용합니다. 가장 많이 사용합니다.

git diff --staged
git diff --cached

 

-  LR ⬌ LR (branch, commit) : Local 저장소 내에서, A와 B 브랜치 간의 차이를 확인하기 위해 사용합니다. A와 B가 Commit이라면 Commit 간의 차이를 확인합니다.

** commit hash를 알기 위해서는 아래 3번과 4번을 참조하세요

git diff A..B

 

 

3. 저장소 전체(LR,RR)의 히스토리 확인하기

 

git log 명령어는 해당 repository의 public record들을 전부 볼 수 있는 명령어 입니다.

** git reflog는 LR에서 작업된 commit들의 commit 히스토리만 볼 수 있습니다.

 

아래와 같은 명령어를 통해 git log를 깔끔하게 볼 수 있습니다.

git log --oneline --decorate --graph --all
git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --all

 

4. 저장소 전체(LR,RR)의 히스토리 확인하기2

 

git log 명령어와 비슷하지만 패키지로 제공되는 tig라는 명령어가 있습니다. 아래와 같이 실행하면 git log보다 더 정렬되어 확인할 수 있습니다.

apt-get install tig

tig

 

https://kotlinworld.com/278

728x90
반응형