[Try오컨2기] 두번째주 복습

EmilY
4 min readMay 6, 2020

💪 Git Rebase 집중실습

원하는 history 위치에 commit을 끼워넣기

  1. rebase를 interactive rewind (감아주기)
  2. 원하는 위치의 커밋을 edit해줌
  3. 파일 변경
  4. 파일 변경분을 add, commit 한 후
  5. 감았던 커밋을 풀어준다

→ 그럼 만약 —root 키워드를 집어넣지 않는다면? → 이상한 일이 일어나는데...

→ 중도에 rebase 취소하고 싶을 경우엔 —abort

→ commit 역사를 복구하고 싶을 경우 : —hard origin/master

commit 3개를 1개로 합치기(amend)

  1. rebase를 interactive rewind(감아주기)
  2. 원하는 위치의 커밋을 edit
  3. 합치길 원하는 커밋만큼 커밋 취소
  4. —amend로 취소해준 커밋을 합쳐준다
  5. 감았던 커밋을 풀어준다

commit 수정할때 사용하는 명령어들

git reset —soft HEAD~1 : commit은 취소하고 파일 변경분의 기록은 남겨둔다. (커밋 수정시 사용)

git reset —hard HEAD~1 : commit도 취소하고 파일 변경분의 기록도 지운다! (커밋 삭제할 때 사용)

git commit —amend : add한 히스토리를 commit에 덮어씌워 최근 커밋을 수정한다! 이때 커밋 아이디도 바뀌기 때문에 push할 때 —force를 해줘야 한다.

가장 오래된 history에서 두번째 커밋 삭제하기

  1. root까지 rebase 감기 (-i —root)
  2. 원하는 위치의 커밋을 edit
  3. 원하는 커밋을 삭제해준다
  4. 감았던 커밋을 rewind해준다

마지막으로 수정한 사람 추적하기

git blame <파일명> : 수정한 사람/날짜/커밋 아이디가 나오는 명령어

커밋 역사 추적 — git blame/ git reset — hard

  1. git blame으로 원하는 라인의 커밋 아이디 찾기
  2. 해당 라인의 커밋아이디로 reset —hard하면 원하는 히스토리의 시점으로 이동 가능

→ 다시 현 시점으로 돌아오려면 git reset —hard origin/master

진짜 최초 커밋을 더 쉽게! 찾아내기

git log —reverse — <파일명> : 가장 오래된 로그부터 출력

프로젝트 자체의 최초커밋 찾기

git log —oneline —reverse | head -n : 원하는 라인만큼 역순의 로그를 찍는다

❤️ blame은 대체 왜 하느냐?

히스토리를 기반으로 이전에 만든 사람이 어떤 의도로 만들었는지 파악할 수 있다 → 너의 의도는 이런 것 같은데, 네가 고려하지 않은 부분들 때문에 문제가 생겼고, 너의 이런 빈틈을 내가 보완하기 위해 작업을 했다고 어필할 수 있다!!!!!!

팀 협업 실습에서 나온 내용

  1. github에서 Organization 계정 만들기 → 개인 계정으로 fork 뜨기
  2. git remote rename origin upstream : remote repo의 이름을 수정
  3. conflict 발생은 interactive(-i) 걸린 것과 비슷하다

Commit Message 작성 가이드

반드시 이렇게 해야하는 것은 아니지만, 이렇게 하면 좋다!

// 제목
키워드 : 이슈 한줄 요약
// 내용
원인설명 (내용의 80%)
해결설명 (내용의 20%)
// 전후 비교
Before:
// 간단한 이전 코드 몇줄
After:
// 간단한 이후 코드 몇줄
// 커밋 아이디 첨부
<commit ID>에 이러이러한 문제가 있었다....
// 또는 이슈 넘버
Fixes : <issue Number>
// 연관된 사람
Reviewed-by: (리뷰받고 싶은 사람)
Reported-by: (보고해준 사람)
Suggested-by: (제안해준 사람)
Signed-off-by: (내 서명)
// 참조
Cc: (참조할 사람)
  • 커밋에 대한 정보가 명료하고 구체적이어야 한다!
  • 이 프로젝트에 자주 컨트리뷰트하는 사람을 참조 걸면 그 사람이 내 PR을 리뷰 잘 해준다 → 관심을 받을 수 있다 :)

용어

메인테이너 : 프로젝트의 owner

리뷰어 : 리뷰해주는 사람들..굉장히 중요한 사람들!

commit 단위의 이상적인 양

  • 작을수록 좋다! → **’어떤 목적으로 만들었는지’**가 중요. 한번에 한 가지 일을 하는게 가독성이 좋다. 커밋의 목적은 협업이기 때문에 read와 discussion하기 좋은 단위로 만든다!
  • 당연히 컴파일 에러가 나면 안된다

--

--