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

이대현·2021년 8월 14일
1

GIT

목록 보기
10/13

2021 오픈소스 컨트리뷰션 아카데미의 오픈소스 101 교육을 듣고 정리한 내용입니다.


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

오픈소스 프로젝트에서 Git은 단순한 프로젝트 버전관리 도구가 아니다. 협업의 관점에서 오픈소스를 해석하고 관리할 줄 알아야 한다.

git shortlog -sn | nl

     1      77  Soumith Chintala
     2      63  Bryan Marcus McCann
     3      34  Adam Lerer
     4      23  soumith
     5      20  Rohan Varma
     ...
  • nl 명령은 파일의 line number 명시
git shortlog -sn -- mnist/ | nl
  • ( 예제 코드에서는 -- mnist 폴더 )특정 폴더, 파일을 기준으로 기여 내역을 확인할 수 있다.
  • 보통 오픈소스 개발을 할 때는 특정 파트에 집중하기 때문에, 폴더 별로 기여자 혹은 기여 내용을 확인할 줄 알아야한다.
  • 즉, 프로젝트의 owner 보다, 내가 수정하고 싶은 부분의 가장 큰 기여자에게 도움을 요청하는 것이 더 좋을 수 있다.
    • 오너는 바쁨...

2. 전체 소스파일 수정내역(commit) 확인

git log --oneline

a50b91b PR test
976a903 Merge pull request #294 from gentlelinuxer/fix-mnist
08f6dd5 PR test
92df8fc Merge pull request #263 from gentlelinuxer/test
f1a28b1 PR test
943af71 Merge pull request #136 from gentlelinuxer/master
...
  • wc -l 명령은 (파일) 라인수 개수를 측정한다.
    • 총 commit 개수를 확인할 때 사용

3. 특정 commit의 자세한 내용 확인

git show 6c8e2ba
  • commit ID 란?

    • 6c8e2ba 가 commit의 아이디이다.
  • author, date, commit message, diff 내역 등을 확인할 수 있다.

  • 이 commit 에서는 몇 개의 파일을 수정했을까?

    • grep "diff" 로 어떤 파일들을 확인했는지 잡아서 확인할 수 있다.

4. 특정 소스파일 기준 commit 리스트 확인

git log --oneline -- mnist/
  • -- 폴더/, 파일
  • shortlog, --no-merges 등 옵션들과 섞어서 사용해보자.

5. 특정 날짜 기준 commit 리스트 확인

git log --oneline --after=2020-01-01 --before=2020-06-30
  • wc -l 옵션을 활용하면?
  • 특정 기간의 커밋 리스트와 그 개수를 확인할 수 있으면 프로젝트 진행결과를 해석하고 통계 내기 용이함.

6. Merge commit 이란?

  • 다른 기여자의 커밋이 master에 병합되었음을 알려주는 커밋.
  • 머지 커밋에서는 소스의 수정내역은 없음을 확인하자.
  • --no-merges 옵션을 추가하면 머지커밋을 제외하고 커밋 내역을 확인할 수 있다.

7. 과거순으로 소스파일 commit 내역 확인

최초 커밋을 알고 싶다면?

git log --reverse | head -1
  • reverse 옵션은 역순으로 commit log를 정렬해준다.
profile
삽질의 기록들 👨‍💻

0개의 댓글