헷갈려서 정리하는 git과 github 사용 흐름

경용·2022년 8월 4일
0

정말 이것때문에 왜이렇게 골치아픈가 싶어서 차근차근 정리해보았다.

기본 작업 흐름

  1. 최초 프로젝트 시작 시 원격저장소 마스터를 내 로컬 마스터로 복사 (master에 이미 다른 팀원이 최신 파일을 올려두었다는 가정 하에)
    git clone 마스터 브랜치 주소
  2. 로컬 마스터를 복사해서 마찬가지로 내 로컬에 브랜치 생성. 즉, 브랜치 생성 = 현재 로컬 마스터를 브랜치에 복사
    git branch 브랜치이름
  3. 해당 브랜치에서 작업 완료 후, 혹은 작업 중간중간 원격저장소에 push
    git add . : 스테이징
    git commit : 에디터로 커밋 메시지 작성
    git push origin 브랜치이름 : 마스터로 푸시 X. 반드시 브랜치로 푸시
  4. 해당 브랜치 github 페이지에서 Pull request
  5. 검토가 끝나고 마스터와 merge가 되면 내 로컬 마스터로 이동해서 pull 받아옴. 이때 작업 중이던 것은 commit까지 해두고 pull 받아와야 함.
    git add .
    git commit : 작업 내용 임시저장까지 완료한 후 pull 해와야 함
    git checkout master
    git pull origin master
  6. 작업하던 것과 싱크를 맞춰야 하므로 작업하던 브랜치로 이동해서 내 로컬 마스터 내용과 merge 해줌
    git checkout 브랜치이름
    git merge master : 여기서 master는 원격저장소의 master가 아니라 내 로컬을 말함
  7. 충돌(conflict) 메시지에 따라서 파일 수정. 수정 후 바로 push하지 않아도 괜찮지만, push할 준비가 된 브랜치에 한해 git merge master를 해주는 게 좋다.
    git add .
    git commit
    git push origin 브랜치이름

원격 저장소에 만들어진 브랜치를 로컬로 가져오기

  1. 원격 저장소 변경사항 업데이트
    git remote update
  2. 원격 저장소의 모든 브랜치 보기
    git branch -a
  3. feature/modeling 이라는 브랜치 가져오기
    git checkout -t origin/feature/modeling

실수했다면

  • 커밋을 취소하고 싶다면
    git reset --soft HEAD^
    커밋을 취소하고 변경 사항을 staged 상태로 돌림 (add까지 한 상태로)

    git reset --mixed HEAD^
    커밋을 취소하고 변경 사항을 unstaged 상태로 돌림 (add 이전 상태로)

  • 브랜치를 삭제하고 싶다면
    git branch -d 브랜치이름

기타

  • Pull request(PR) 후 merge 대기 상태에서 계속 push 하면 commit이 누적되니까 나중에 한꺼번에 merge 가능하다. (merge 기다리면서 같은 브랜치에서 계속 작업 가능)

  • merge 전 새 브랜치 파서 작업하려면 우선 내 로컬 마스터로 이동한 후에 새 브런치를 만들어준다.
    git checkout master
    git pull origin master : 혹시 적용해야할 변경사항이 없는지 확인
    git branch 새브랜치이름
    git checkout 새브랜치이름 : 이동 후 새 작업 시작

  • 브랜치 이동 시 반드시 add - commit까지 하고 이동해야 한다. 잘못하면 다른 브랜치와 작업 내용이 섞일 수 있다.

profile
문제를 객관적으로. 그 후 true / false

0개의 댓글