git
새로 배운 git
개발 이력 보기
git log --oneline | wc -l
git shortlog -sn | nl
git shortlog -sn -- mnist | nl
git shortlog --after=2018-01-01 -sn -- mnist/ | nl
git log --oneline --no-merges
git shortlog -h | grep summary
-> -s는 개발자별 commit 개수 요약
git shortlog -h | grep number
-> -n는 개발자별 commit 개수 순위 정리
오픈소스 프로젝트 파악하는 요령
- 인기도, 소프트웨어 가치
- start 개수 = 좋아요 개수
- 인기 있는 free software 일 수 있다.
- 협업, 활성화 정도
- commit 개수
- contributor 인원수
- 오픈소스 본질 = 협업, 리뷰, 토론
- “몇번이나 수정된 프로젝트야?”
- “누가 개발을 많이 해?”
- “수정 내역들을 한줄씩 요약해서 보자”
- commit message : 수정의 이유를 작성
- Improve : 원래 잘 되는 것 개선, 10초 -> 5초와 같이 개선한 것
- Add : 없던 기능, 옵션 추가
- Support : 윈도우 -> 리눅스, x86 -> ARM
- Refactor : 코드를 재배치
- Remove : 필요없는 것 제거
- commit message : 수정의 이유를 작성
-
git show 6c8e2ba grep “diff –git” -
git log –before=2020-06-30 –after=2020-06-01 –oneline wc -l -
git log –oneline –reverse head -3
Rebase 관련
- git remote -v
- git remote remove origin
-
git remote add origin “fork한 프로젝트 URL”
- 팀 프로젝트 url 등록
- git remote add upstream “오픈소스 프로젝트 URL”
- 최신 히스토리 가져오기
- 내부 브랜치 자동 생성 upstream/master
- git fetch upstream master
- 베이스 최신화
- git rebase upstream/master
- 강제로 fork한 프로젝트를 갱신
- git push origin fix-mnist –force
- upstream : 오픈소스 프로젝트 url
-
origin : fork해서 만든 프로젝트 url
- 원상복구
- git stash
- git checkout – mnist/main.py
- checkout 명령어 의미
- 도서관에서 책을 대출받을 때, .git 히스토리 창고에서 파일을 가져온다.
- checkout 명령어 의미
- git reset (add 취소)
- git reset –hard HEAD~1 (첫번째 commit 삭제)
- git commit -s 옵션
- commit message에 signed-off-by(이름과 이메일)
- 라이센스 동의 -> 서명절차
- 라이센스 동의 절차 안했을 때 프로젝트에 PR 전송하면 cla no 라벨이 붙음.
- 가장 최신 commit 수정(amend)
- 일단 고침
- git add
- git commit –amend
- 깃허브에 있는 것은 force push
- 중간 commit 수정은 rewind 기능
rewind 실습
- rebase 과정
- fetch
- git fetch upstream master
- rewind
- git rebase upstream/master (rebase, fetch, rewind)
- fetch
- git rebase -i, –interactive (되감기 기능)
- 8 commits을 수정해야하는 상황
- 가장 오래된 history에서 두번째 commit 이후에 commit 3개 넣기
- git rebase -i –root(전체) / git rebase -i HEAD~10(최근 10개)
- pick을 edit으로 변경
- git log –oneline
- git rebase –continue
- 옛날 commit으로 돌아가서 commit하고 continue함.
- 초기화 하려면
- git reset –hard origin/master
- 두 친구 병합
- git rebase -i root
- git commit –amend
- rebase 도중에 취소하는 것
- git rebase –abort
blame
- Parser 클래스 만든 최초 commit을 찾아내기
- git blame
-
git log –oneline –reverse – src/node_http_parser.cc head -1