[Try오컨2기] 첫주 복습

EmilY
4 min readMay 6, 2020

try 오픈소스 컨트리뷰트 2기를 수강하면서 정리한 내용입니다

📝 여러가지 명령어들

  1. git diff : 기존에 있던 파일의 변화내용. 이전에 없던 파일이면 변화가 아니니 결과가 안나타남!
  2. git status : 파일의 add, commit 상태변화 내용. 내가 어디까지 작업했는지 아리까리할때 사용
  3. git show : 가장 최근 커밋의 상세내용을 보여줌!
  4. git commit -sm "커밋 메시지" 서명을 포함한 커밋으로 git show로 찍을 경우, 그냥 commit과는 달리 signed-off-by라는 서명이 들어간다!

로그 확인하기

  1. git shortlog : 로그가 오래된 순서로 찍힌다!
  2. git log : 로그가 최신순으로 찍힌다!
  3. git log --oneline : 최신 순서대로 커밋 메시지만 찍힌다

깨알 용어 설명

add : 히스토리

commit : 역사의 한 단위 '블럭'

tree : 블럭들의 모임이 tree

기타

  • ; 로 연속적인 명령어 수행가능
  • touch는 새로운 파일 만드는 명령어

로컬에 원격 저장소 등록하기

git remote add origin <원격 저장소 URL>

원격에 푸시하기

git push origin <브랜치명>

commit 수정하기 과정

  1. 코드 수정
  2. git add
  3. 그 뒤에 amend

amend란?

git commit —amend

가장 최근 커밋을 수정하는 작업. add한 히스토리를 최근 commit에 덮어씌운다. 커밋 메시지도 수정 가능. amend하고 나면 커밋 아이디도 바뀐다!!

amend를 하고나면 origin에 push할 때 커밋아이디가 달라 충돌이 일어나므로, 이때는 —force 명령어로 강제 밀어넣는다.

❤️ git add, commit 취소하기

git reset <HEAD 위치: 비워놓으면 그냥 add 취소>

add나 커밋한 거 취소하는 명령어

원격에 올라간 커밋을 수정하는 길은 로컬에서 수정 후 -f로 push해주는 것밖에 없다.

⚜️고급과정

프로젝트 fork 떠오기

github에서 원하는 프로젝트에서 fork를 뜬 후

로컬 디렉토리에 repository를 clone

git clone <repo URL>

이 과정에서 굳이 새로운 폴더를 만들 필요 없이, 상위 폴더에서 그대로 clone하면 된다!

pull-request 날리기

  1. 프로젝트 fork 뜨기 → 포크뜬 프로젝트 로컬에 clone 하기
  2. 원하는 브랜치에서 코드 작업하기
  3. git addgit commitgit push origin <브랜치>

pull-request는 포크뜬 깃헙 홈의 branch 창에서 날린다.

merge하기

git merge <merge해줄 브랜치> : 먼저 작업내용을 흡수해줄 브랜치로 옮겨간 후, 작업한 브랜치를 합쳐준다

rebase 하기

간단하게 말해, 기존의 base를 업데이트하기 위함. merge와는 다르다!

원격 upstream 추가하기

git remote add upstream <upstream repo URL>

확인은 git remote -v

upstream의 branch 가져오기

git fetch upstream <upstream branch 이름>

해당 브랜치의 내용을 가져와서(fetch) 그냥 .git/히스토리에 저장해두는 과정

→ 따라서 어떤 브랜치인지 상관없이, base로 만들길 원하는 내용의 브랜치를 가져온다!

→ 그러면 브랜치의 작업단위나 히스토리가 아주 중요하다

rebase하기

git rebase <rebase할 upstream 브랜치 이름>

중간에 낀 commit 수정하기

  1. 커밋 감은 후 (-i) 상태확인 (status)
    rebase —interactive 기능으로 약어는 -i
git rebase -i —root : root는 최초 커밋부터 수정할 수 있게 하기 위한 추가 명령어.

2. 수정분 흡수시키기 (—amend)

3. 감아진 log 풀어주기 (—continue)

git rebase —continue

누가 코드를 수정했는지 추적하기

git blame <파일명>

커밋 아이디를 통한 코드 기록 추적

git show <commitID>

--

--