개발자가 오픈소스를 읽는 방법. - 회사 안에서 특정 틀젝을 진행하는 경우, 오픈소스 참여 등, 내가 처음부터 만들지 않은 플젝을 진행할 때는 **리딩 스킬**이 필요. - 협업 히스토리를 파악하는 것. - 특정 플젝의 개발 경향을 파악할 수 있다. - 누가 개발하고, 어떤 사람이 핫하게 개발? 몇개 개발 했는지. 어떤 기능들이 주로 개발되었는지를 알 수 있음. - 내가 마치 이 팀에서 오랫동안 개발해온 것 처럼 적응. - 누가 어떤 폴더, 기능을 많이 개발했는지 등… - 그러면 만약 막혔을 때, 누구에게 물어봐야할 지 알 수 있음. - Git으로 운영되는 프로젝트는 리딩스킬로 접근하면 프로젝트를 들여다보기가 원할. - 멘토님에게만 의지하는게 아니라, 내가 파악 가능. <br/>
Scanned 2/10/2026
Install via CLI
openskills install pozafly/TIL# Reading Skill
개발자가 오픈소스를 읽는 방법.
- 회사 안에서 특정 틀젝을 진행하는 경우, 오픈소스 참여 등, 내가 처음부터 만들지 않은 플젝을 진행할 때는 **리딩 스킬**이 필요.
- 협업 히스토리를 파악하는 것.
- 특정 플젝의 개발 경향을 파악할 수 있다.
- 누가 개발하고, 어떤 사람이 핫하게 개발? 몇개 개발 했는지. 어떤 기능들이 주로 개발되었는지를 알 수 있음.
- 내가 마치 이 팀에서 오랫동안 개발해온 것 처럼 적응.
- 누가 어떤 폴더, 기능을 많이 개발했는지 등…
- 그러면 만약 막혔을 때, 누구에게 물어봐야할 지 알 수 있음.
- Git으로 운영되는 프로젝트는 리딩스킬로 접근하면 프로젝트를 들여다보기가 원할.
- 멘토님에게만 의지하는게 아니라, 내가 파악 가능.
<br/>
## 명령어
### 해당 오픈소스에서 "누가 제일 개발을 많이할까 ?"
nl 명령은 파일의 line number 명시 (순위표시용으로 사용)
```shell
$ git shortlog -sn | nl
$ git shortlog -sn -- [폴더명]
```
- 이걸로 단순히 순위를 매기는 게 아님
- 폴더를 기준으로 순위를 매기면, 누구한테 리뷰받기 쉽겠다 하고 파악 가능.
- 무조건 오너한테만 매달리면 안된다.
- 상대방 입장을 고려하면서.
- 날짜를 기준으로 매길 수도 있다.
<br/>
### Git shortlog -s 옵션 이란 ?
- 개발자별 commit 개수 요약
```shell
$ git shortlog -s
```
<br/>
### Git shortlog -n 옵션이란?
- 개발자별 commit 개수 순위 정리
```shell
$ git shortlog -n
```
따라서 위의 s, n을 붙여서 `git shortlog -sn` 이라고 옵션을 붙여주는 것임.
<br/>
### 전체 commit 수 세기
```shell
$ git log --oneline | wc -l
```
여기서 wc -l 명령은 (파일) 라인수 갯수 측정.
<br/>
### 내역(commit) 리스트
```shell
$ git log --oneline
```
<br/>
### 내용 확인
```shell
$ git show [commitId]
```
<br/>
### 특정 commit에서 수정한 파일 갯수?
```shell
# 무슨 파일을 수정했는지 나옴.
$ git show [commitId] | grep "diff --git"
or
# 몇개의 파일을 숫자만 나옴.
$ git show [commitId] | grep "diff --git" | wc -l
```
<br/>
---
📌 커밋에 대해서.
- 파일 하나에 한 커밋으로 생각하는 경우도 있다.
- 하지만, 커밋을 보면 여러개가 묶여있음.
- 우리는 몇 라인 정도, 몇개의 파일을 하나의 commit으로 묶을까?
- 몇만라인을 하나의 commit으로 때리면 협업하기 어렵다.
- 리뷰하기 좋은 단위로 commit을 주는게 좋다.
📌 머지 커밋이란?
- merge: 합쳐짐. 머지 했다라는 커밋이 따로 있다.
- `Merge pull request #263 from gentlelinuxer/test`
- 단순 merge만 알려주는 것
- `$ git log --oneline --no-merges`
- 빈 껍데기 커밋을 제외하고 보여준다. 알맹이만 보여줌.
- `$ git shortlog --no-merges -sn` 즉, 이걸 하면, 커밋 등수를 껍데기 제외하고 볼 수 있다.
- Merge commit은 show를 해보면, 수정 내역이 없다.
참고로 git 명령어에서 `| head -[숫자] ` 라고 마지막에 붙여주면 숫자 라인만큼만 보여줌. 생략해서 보고 싶을 때 사용한다.
---
<br/>
### 수정 내역 자세히 보기
```shell
$ git log -p
```
- 세세한 내용을 보고싶다.
- 즉, 소스 코드 어디를 수정했는지 까지 나온다.
- 단, 제목만 보고 싶다: --online
<br/>
### 특정 폴더를 기준으로 소스파일 기준 커밋 리스트
```shell
$ git log --oneline -- [폴더명]
```
<br/>
### 특정 날짜 기준
```
$ git log --oneline --after=[YYYY-MM-dd] --before=[YYYY-MM-dd]
```
여기서 after, before은 `inclusive` 다. 즉 미만 초과가 아니라 이상 이하다.
<br/>
### 다양한 옵션
```shell
$ git log --oneline --after=2020-01-01 --before=2020-06-30 --no-merges -- mnist
```
<br/>
📌 위 명령어는 최신 것부터임. 옛날 것부터 보고 싶으면?
- --reverse
<br/>
📌 커밋 메세지를 넣는 것이 굉장히 중요하다.
- 커뮤니케이션.
- 소스를 왜 수정했는지에 대한 정보를 넣는 것임.
- 예를 들면 update 라고 적는 경우가 있다. 안된다.
- 한줄로 적는 것은 보통 Title만 적는 것이다.
- add, Fixes, Remove, 라는 첫단어 초이스가 중요하다.
- update example 라는 메세지는 구체화 되어 있지 않다.
No comments yet. Be the first to comment!