2021 오픈소스 컨트리뷰션 아카데미의 오픈소스 101 교육을 듣고 정리한 내용입니다.
branch 란? 같은 폴더 다른 세상
기여할 때 branch 명칭은 어떤 작업을 하는지에 대한 요약 명칭으로 짓는다.
git checkout -b fix-mnist
왜 새 브랜치에서 작업한 내용이 master 브랜치에서도 바로 적용되나요?
commit 메세지는 유의미한 설명이 될 수 있도록 작성한다.
라이센스 서명
넣어서 commit 메세지 적기
이 포스팅에서 말한
수정
이란 표현은 add, commit으로 history를 만들기 전 상황을 의미한다.
git diff
-
표시로 지워진 내용, 초록 +
표시로 추가된 내용이 보여진다.# 수정한 파일 확인하기
$ git status
# 수정한 내용 잠시 저장(stash) 하기
$ git stash
# 현재 소스폴더 상태 확인하기: 아무 수정분 없음을 확인
$ git status
# 잠시 저장(stash)해둔 내용 복구
$ git stash pop
# 복구된 수정한 파일 확인하기
$ git status
git checkout -- 파일명
# 최신 commit 수정이전 commit ID 확인하기
$ git log --oneline -1
106d167 (HEAD -> fix-mnist) Add import requests
# 수정한 내용 commit 할 준비 하기
$ git add mnist/main.py
# 최신 commit 수정하기
$ git commit --amend
# 최신 commit 수정 이후 commit ID 확인하기
$ git log --oneline -1
9786c82 (HEAD -> fix-mnist) Add import requests
base란? 내가 작업하기 전의 최신 히스토리를 말한다.
내 PR이 Merge되기 전, 다른 사람의 PR이 먼저 프로젝트에 반영될 수 있다. 그러면 내 PR base에 팀프로젝트의 최신 히스토리를 업데이트 하는 작업이 필요하다.
즉 base를 업데이트 하는 작업을 해야하고 이를 rebase
라고 부른다.
git 명령어는 fetch
를 사용한다.
# 1. 공식 upstream 저장소에서 최신 commit history 가져오기
$ git fetch upstream master
# 2. 최신 commit history 기준으로 베이스 갱신 (rebase)
$ git rebase upstream/master
# 3. Fork 한 저장소(GitHub)도 수정하기 (PR 자동 갱신)
$ git push --force origin fix-mnist
fetch
를 사용한다.rebase
명령어로 적용한다.force push
한다. 이때 PR은 자동 갱신된다.