Reading Skill

개발자가 오픈소스를 읽는 방법.

Views0
PublishedFeb 7, 2026

Loading actions...

5 minBeginnerpromptSingle file

Skill content

Main instructions and any bundled files for this skill.

markdown

Reading Skill

개발자가 오픈소스를 읽는 방법.

  • 회사 안에서 특정 틀젝을 진행하는 경우, 오픈소스 참여 등, 내가 처음부터 만들지 않은 플젝을 진행할 때는 리딩 스킬이 필요.
  • 협업 히스토리를 파악하는 것.
  • 특정 플젝의 개발 경향을 파악할 수 있다.
    • 누가 개발하고, 어떤 사람이 핫하게 개발? 몇개 개발 했는지. 어떤 기능들이 주로 개발되었는지를 알 수 있음.
    • 내가 마치 이 팀에서 오랫동안 개발해온 것 처럼 적응.
    • 누가 어떤 폴더, 기능을 많이 개발했는지 등…
    • 그러면 만약 막혔을 때, 누구에게 물어봐야할 지 알 수 있음.
  • Git으로 운영되는 프로젝트는 리딩스킬로 접근하면 프로젝트를 들여다보기가 원할.
  • 멘토님에게만 의지하는게 아니라, 내가 파악 가능.

명령어

해당 오픈소스에서 "누가 제일 개발을 많이할까 ?"

nl 명령은 파일의 line number 명시 (순위표시용으로 사용)

$ git shortlog -sn | nl
$ git shortlog -sn -- [폴더명]
  • 이걸로 단순히 순위를 매기는 게 아님
    • 폴더를 기준으로 순위를 매기면, 누구한테 리뷰받기 쉽겠다 하고 파악 가능.
    • 무조건 오너한테만 매달리면 안된다.
    • 상대방 입장을 고려하면서.
  • 날짜를 기준으로 매길 수도 있다.

Git shortlog -s 옵션 이란 ?

  • 개발자별 commit 개수 요약
$ git shortlog -s

Git shortlog -n 옵션이란?

  • 개발자별 commit 개수 순위 정리
$ git shortlog -n

따라서 위의 s, n을 붙여서 git shortlog -sn 이라고 옵션을 붙여주는 것임.


전체 commit 수 세기

$ git log --oneline | wc -l

여기서 wc -l 명령은 (파일) 라인수 갯수 측정.


내역(commit) 리스트

$ git log --oneline

내용 확인

$ git show [commitId]

특정 commit에서 수정한 파일 갯수?

# 무슨 파일을 수정했는지 나옴.
$ git show [commitId] | grep "diff --git"

or

# 몇개의 파일을 숫자만 나옴.
$ git show [commitId] | grep "diff --git" | wc -l


📌 커밋에 대해서.

  • 파일 하나에 한 커밋으로 생각하는 경우도 있다.
  • 하지만, 커밋을 보면 여러개가 묶여있음.
  • 우리는 몇 라인 정도, 몇개의 파일을 하나의 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 -[숫자] 라고 마지막에 붙여주면 숫자 라인만큼만 보여줌. 생략해서 보고 싶을 때 사용한다.



수정 내역 자세히 보기

$ git log -p
  • 세세한 내용을 보고싶다.
  • 즉, 소스 코드 어디를 수정했는지 까지 나온다.
  • 단, 제목만 보고 싶다: --online

특정 폴더를 기준으로 소스파일 기준 커밋 리스트

$ git log --oneline -- [폴더명]

특정 날짜 기준

$ git log --oneline --after=[YYYY-MM-dd] --before=[YYYY-MM-dd]

여기서 after, before은 inclusive 다. 즉 미만 초과가 아니라 이상 이하다.


다양한 옵션

$ git log --oneline --after=2020-01-01 --before=2020-06-30 --no-merges -- mnist

📌 위 명령어는 최신 것부터임. 옛날 것부터 보고 싶으면?

  • --reverse

📌 커밋 메세지를 넣는 것이 굉장히 중요하다.

  • 커뮤니케이션.
  • 소스를 왜 수정했는지에 대한 정보를 넣는 것임.
    • 예를 들면 update 라고 적는 경우가 있다. 안된다.
    • 한줄로 적는 것은 보통 Title만 적는 것이다.
    • add, Fixes, Remove, 라는 첫단어 초이스가 중요하다.
    • update example 라는 메세지는 구체화 되어 있지 않다.
Share: