All Articles

Git - 팀 프로젝트 중 git과 github 사용 흐름

기본 작업 흐름

  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

그냥 임시저장을 하고 싶을 뿐이라 커밋 메시지 남기기 부담스럽다면

  1. 현재 작업 내용을 임시 저장
    git add .
    git stash

  2. 임시 저장한 작업 내역을 다시 불러옴
    git stash apply [stash 이름]

  3. 작업 완료 후에는 보통 푸시와 과정 동일
    git add .
    git commit
    git push origin 브랜치이름

  4. 작업 끝난 내용의 stash 제거하기. 가장 최근 stash 하나를 제거한다.
    git stash drop

  5. 만약 apply와 동시에 stash를 제거하고 싶다면
    git stash pop

  6. stash를 잘못 불러왔다면
    git stash show -p | git apply -R
    혹은
    git stash show -p [stash 이름] | git apply -R

헉 실수했다

  • 커밋을 취소하고 싶다면
    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 혹은 stash까지 하고 이동해야 한다. 잘못하면 다른 브랜치와 작업 내용이 섞일 수 있다.xw