[Git] 오픈소스 101 기본 교육I_오픈소스 프로젝트 파헤치기

Chaejung·2022년 7월 19일
3

굳이 Git을 명령어로 공부 해야하나?

GUI: 사용자 친화적, 편하게 사용 가능, but 세부적인 기능을 사용하기 힘들다, 협업 문제를 해결하기 어렵다

CLI: 세부적인 기능을 사용할 수 있다, 문제해결 하기에 좋다(세부기능 활용이 유연하기 때문에), 자동화 하기에 좋다(스크립트), 명령어 인터페이스를 잘 다루게 되면 생산성이 높아진다

기본 linux 명령어

# 폴더 안에 있는 내용 확인
ls

# 경로 이동
cd

⭐️# print working directory 현재 폴더 경로 확인
pwd

# 빈 폴더 생성
mkdir {폴더 이름}

# 빈 파일 만들기
touch {파일 이름}

# 파일명 변경(또는 파일 경로 이동)
mv

오픈 소스 프로젝트 작업 순서

  1. Fork
    오픈 소스 프로젝트 복사
  2. Clone
    소스 코드를 다운 + .git 폴더(==히스토리 창고) 함께 다운로드
  3. Project Trend Analysis
    ⭐️프로젝트 개발 경향을 해석(협업때문에)
    3-1) 히스토리를 쌓는 것은 쉽지만 협업하는 과정에서 히스토리를 역추적하는 것은 쉽지 않다.
    3-2) 이런 질문들에 답할 수 있어야 한다.
    ex. "이 소스파일은 누가 제일 많이 개발해요?"
    ex. "프로젝트 전체/소스파일은 최근(6개월)에 몇 번 수정 작업이 이루어졌나요?"
    3-3) add-commit-push-PR만 잘 올린다고 git 잘하는 것이 아니다
    3-4) 협업하면서 파일마다 일일이 묻고 다닐 수 없으니 스스로 답을 찾을 수 있어야 한다.
  4. Test, Execute
    4-1) 코드부터 보는 것은 엄밀히 말하자면 잘못된 것이다. 코드는 도구에 불과하다.
    4-2) 실행부터 하는 것이 우선이다.
  5. Edit
    수정 이력 저장(add, commit)
  6. Push
    내가 만든 작업을 fork한 저장소에 업로드
  7. Pull-Request
    참여하려는 프로젝트에 수정 작업 제출

오픈소스 프로젝트를 파악하는 요령

  1. 인기도, 소프트웨어 가치 => star 개수 / 좋아요 개수
    1-1) 이것만 보면 안된다
    1-2) 오픈소스 프로젝트로서는 미성숙할 수 있는 기준이다
  2. 협업, 활성화 정도 => commit 개수, contributor

오픈소스 프로젝트의 본질은 "협업", "리뷰", "토론"에 있다.
commit이 많을 수록 프로젝트의 덩치가 크다는 것을 알 수 있다

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

🧑‍💻:"총 몇 번의 commit이 있었나요?"
git log --oneline | wc -l

🧑‍💻:"이 프로젝트에서 누가 제일 많이 개발했나요?"
git shortlog -sn | nl

🧑‍💻:"이 폴더에서 누가 제일 많이 개발했나요?"
git shortlog -sn -- {폴더 이름} | nl

🧑‍💻:"어느 시간대 중에서 이 폴더는 누가 제일 많이 개발했나요?"
git shortlog --after={YYYY-MM-DD} -sn -- {폴더 이름} | nl

"merge 제외하고 커밋 내역 보기"
git log --oneline --no-merges
git shortlog -h | grep summary
-s, --summary 	suppress commit descriptions, only provides commit count커밋 설명을 생략하고, 커밋 수만 표시합니다
git shortlog -h | grep number
-n, --numbered   작성자별 커밋 수에 따라 정렬합니다
"6월 한달간의 커밋 수를 볼 때"
git log --oneline --after 2020.06.01 --before 2020.06.30 | wc -l

"6월 한달간의 내역 볼 때"
git log --oneline --after 2020.06.01 --before 2020.06.30 | -l

"가장 최근의 것을 3개 뒤집어서 보여줌"
git log --oneline --reverse -3

"가장 옛날 것 3개를 보여줌"
git log --oneline --reverse | head -3
  • wc: word count
  • l: line

느낀 점

단순히 git은 add-commit-push만 잘하면 어디가서 '나 git 좀 한다'라고 말할 수 있을 거라 생각했는데, 전혀 아니었다.

생각보다 git으로 할 수 있는 것이 많고, commit이 더 큰 의미를 가진다는 것을 깨달았다.

특히나 git을 CLI로 다루는 것에 약간의 지루함을 느끼고 있었는데
다양한 명령어와 약어들이 있는 것을 보고

역시 공부하지 않으면 아무 것도 모르는구나,
전혀 다른 세계가 있다는 것을 알게 되어 흥미로웠다.

2편에서는 본격적으로 협업에서 꼭 필요한 rebase, blame을 다룰 예정인데,
장담컨데 이 편보다 훨씬 더 재밌을 것이다!

profile
프론트엔드 기술 학습 및 공유를 활발하게 하기 위해 노력합니다.

1개의 댓글

comment-user-thumbnail
2022년 7월 22일

2편 주세요! 더 재밌는거 보고 싶어요! 재밌게 읽었습니다 :)

답글 달기