[git, 오픈소스] 협업을 위한 git 사용 <part 1 : 내부 commit 살펴보기>

Jung Wish·2020년 8월 2일
0

OSS 오픈소스 컨트리뷰톤 2020에 대한 내용은 여기로

이번 OSS 컨트리뷰톤에 참여하게 되어, 협업을 위한 git 사용법에 대한 특강을 온라인으로 수강하였고 내용을 복기하고 추후에 또 참고하기 위해 본 글을 작성하게 되었습니다.

오픈 소스를 프로젝트 기여를 위한 일련의 과정을 크게 다음과 같습니다.

  1. 기여하고 싶은 프로젝트를 Fork한다.
  2. origin remote에서 fork된 프로젝트를 clone 받는다.
  3. 오픈소스의 issue를 살펴보며 기여할만한 부분을 찾는다.
  4. issue에 코멘트로 토론하거나, 소스 코드를 수정해 Pull Request를 보낸다.
  5. merge 요청이 거절당하면, 코멘트나 권유사항을 살펴보고 재도전해본다!
  6. merge 요청이 수락되면 contribution에 성공!

따라서, 다음과 같은 일련의 과정을 수행하기 위해서는, 우선 git의 기능을 좀 더 활용 할 필요가 있어 보입니다.

PART 1 : 오픈소스의 내부 commit 살펴보기

commit의 역사 들여다보기

git에는 코드의 변경사항 commit(커밋)의 역사를 담고 있습니다.

따라서, 오픈소스에 기여하기 위해서는 우선 내부 소스코드가 누구에 의해서 어떻게 변했는지 본 프로젝트에는 누가 가장 많이 기여하고 있는지 등을 살펴보기 위해서는 commit의 역사를 알아볼 필요가 있습니다. 아래에 commit의 역사를 볼 수 있는 명령어들을 정리해 보았습니다.

commit의 history를 볼 수 있는 명령어들

  • commit을 한 사람commit title을 보여주는 명령어
git shortlog -sn --merge | less 
# less : 화면에 출력할 수 있는 만큼만 보여주는 명령어(linux)
# -s : summary, -n : numberd
# --merge, --no-merges : merge와 관계있는/없는 커밋만 보기
  • 전체 소스파일 수정내역을 보여주는 명령어
git log
git log --oneline
git log -p
# 특정 옵션이 없으면, 커밋ID, Author, Date, title만 출력
# --oneline : 한줄씩 요약해 출력, -p : 커밋 상세내용도 출력
# [commit 해시ID] [commit title] 형태로 출력
# 한줄씩 최근부터 - 최초커밋까지 출력된다.
  • commit의 상세 내용을 볼 수 있는 명령어
git show [commit ID]
# 해당 파일의 변경 내용, commit message, 커밋한 사람 등을 볼 수 있다.
# Trouble Shooting, 개발 기록, 왜? 그리고 어떻게?를 살펴볼 수 있음
  • commit에서 변경된 파일의 개수를 확인하는 방법
git show [commit ID] | grep "diff --git"
# grep : 리눅스 문자열 검색 명령어
# "diff --git"은 변경된 파일마다 git 상세내용에 기재된다.
# merge commit은 빈 커밋이라 diff에 대한 내용이 없다.
  • 특정 폴더 기준으로 commit 내역 찾는 방법
git log --oneline -- [directory]
# -- : 리눅스에 등록된 특정 명령어를 무시하고, 본래 이름을 적용
# [ example ] node가 폴더명인데 -- node 명령어는 노드를 실행하지 않음
  • 특정 날짜 기준으로 commit 내역 찾는 방법
git log --oneline --after=2020-07-01 --before=2020-07-31
# --after=yyyy-mm-dd : 특정 날짜 이상
# --before=yyyy-mm-dd : 특정 날짜 이하
  • commit 내역 옛날 것부터 보는 방법
git log --oneline --reverse
# --reverse : 순서 뒤집어서 보기

Reference

  • 본 명령어들은 2020 오픈소스 컨트리뷰톤 사전 강의인 수강하고 정리한 내용입니다.
    • 강좌 : 오픈소스 101
    • 스피커 : 리얼리눅스 송태용님 [git]
profile
Frontend Developer, 올라운더가 되고싶은 잡부 개발자, ISTP, 겉촉속바 인간, 블로그 주제 찾아다니는 사람

0개의 댓글