새소식

ML Development/Git - 2022.08.25

[Git] 오픈소스와 Git - (2)

  • -

오픈소스 컨트리뷰션 아카데미에서 진행된 Git/Github 고급 실습 강의를 정리한 내용입니다.

 


fetch

  • 언제 사용?
    • Origin(fork 해온 상태)과 Upstream(현재 원본 repo 상태)다를 때, 추가된 commit을 가져오고 싶을 때 활용
  • 히스토리 창고(.git)에만 저장
  • git fetch upstream master
    • pull = fetch + merge
  • upstream/master 라는 branch 이름이 자동으로 생성 됨

rebase

  • 현재 Base를 최신으로 갱신한다
  • 내가 사용 중인 Base가 최신 것이 아니면 오류 발생할 수 있음
    • 만약 내가 수정한 코드가 다른 사람이 최근에 수정된 코드가 동일한 파일에서 나왔을 경우
  • git rebase upstream/master
  • rebase 단계
    • 1단계 : rewind
    • 2단계 : rebase
    • 3단계 : 새로운 내용 commit
      • 3 단계 error → commit이 되지 않은 상태
      • → amend 사용 X
  • git rebase -i --root
    • 돌아가고 싶은 시점을 pick에서 edit으로 변경
    • -i : interactive 기능 → 언제 사용?
      • 리뷰/토론 → 수정 사항 관리
      • ex) 두번째 commit은 삭제하고, 세번째 commit은 3개로 나누고, 네번째 commit은 메시지 수정하고 …
      • rewind 과정
  • git rebase --continue
    • ex) 중간에 3개 commit 넣고 다시 HEAD 변경
  • → rewind에서 원하는 작업한 후에 다시 되돌리기
  • git reset --soft HEAD~1
    • soft는 파일은 그대로 두고 commit 내역만 삭제
  • git commit --amend : commit 메시지 변경
  • rebase 취소?
    • git rebase --abort
  • rebase → commit 수가 적으면 괜찮지만 많으면 rewind 시 시간이 너무 오래 걸림!

Blame

  • 해당 소스 라인을 누가 마지막으로 수정 했는지 commit ID 추적이 가능
  • 언제 사용?
    • 특정 소스 라인을 수정해야 하는 상황
      • ex) 760 라인에 문제가 있다고 판단한 상황 가정
        • 760 라인을 만든 commit을 찾아내 이해
          • 누구인지 궁금? Blame!
        • bug fix commit 생성
        • 제출
    • 소스 분석 / 리딩
      • 라인 별 분석해 이유를 파악 함
    • 클래스, 함수 추가 → 역추적

Github Blame

Blame 클릭 시 좌측에 나오는 commit 내역
commit 내역을 클릭하면 수정 사항들이 나온다!

  • [ic]+[/ic] : 추가된 코드
      • [ic]+[/ic] 가 최초로 나온 경우 첫 등록 됐다고 할 수 있음
  • [ic] - [/ic]: 삭제된 코드
  • 생성자, 함수 정의 부분을 따라가면 최초 commit을 찾을 확률이 높음
    • git log --oneline --reverse node_http_parser.cc | head -1
  • 파일이 생성된 최초 commit 확인할 때는 폴더가 변경됐을 수도 있음을 고려

upstream

  • 원본이 담긴 repo
  • git remote -v : 사용해서 upstream 없다면 등록!
    • git remote add upstream https://github.com/oss-test-A06~~
  • git fecth upstream master
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.