git의 이해와 커맨드 정리

Johnywhisky·2022년 12월 13일
0

서로 다른 개발자들이 모여 하나의 서비스를 만들다보면 깃이 꼬일 때가 분명 발생할 것이기에 깃 커맨드를 제대로 이해해두자(애초에 안꼬이는게 최고이지만...)

깃 영역 이해하기

  • Working Directory : 내가 작업하고 있는 프로젝트의 디렉토리
  • Staging Area : 커밋을 하기 위해 $ git add 명령어로 추가한 파일들이 모여있는 공간
  • Repository : 커밋들이 모여있는 저장소

Working Dir에서 스테이징 영역으로 저장

작업 프로젝트에 변경사항이 생기면 깃은 자동으로 변경 사항이 생긴 것을 감지합니다. MacOS oh-my-zsh 기준 ~$!1 처럼 느낌표와 숫자가 떠있는 경우와 같습니다. 이 때 다음의 명령어를 통해 변경 사항을 스테이징 영역에 저장할 수 있습니다.

  • ~$ git add <file>
  • 예시) git add api/signin/.
    api/signin 폴더 하위에 있는 모든 파일을 staging에 저장합니다.

여기서, git add .와 같이 모든 변경 사항 저장은 최대한 피해야 합니다. 예를들어 django에서 settings.py 파일과 같이 로컬 세팅이 원격 저장소에 올라가면 안되는 파일을 건드린 기록이 남아있다면 전부다 스테이징 영역으로 넘어가기 때문입니다.

스테이징 영역의 저장 기록 취소(add 되돌리기)

만약 실수로 모든 변경사항을 스테이징 영역에 저장했다면 어떻게 해야할까요? 다음 두 가지 명령어를 이용해 취소할 수 있습니다.

  • reset 명령어를 이용한 방법
    ~$ git reset HEAD <file>
  • restore 명령어를 이용한 방법
    ~$ git restore --staged <file>
  • 예시) git restore api/signin/.
    스테이징에 저장된 변경사항 중 api/signin 폴더 하위에 있는 모든 파일을 스테이징에서 제외함(변경 사항 자체 삭제가 아닌 스테이징 영역에서 제외 됨)

변경 사항 삭제

Ctrl + z 또는 Cmd + z로 변경 사항을 되돌릴 수 있습니다. 하지만 이 방식은 순차적으로 진행되기 때문에 일부 변경 사항을 되돌릴 때 유리합니다.
작업 디렉토리 내 특정 파일에 적용 된 변경 사항을 이전 커밋 시점까지 되돌리는 명령어가 있습니다.

  • git restore <file>
  • git checkout -- <file>
  • 예시) git restore api/signin/.
    api/signin 폴더 하위에 있는 모든 파일의 변경사항을 취소함

스테이징 영역에서 저장소로 저장하기

  • 전체 변경사항 즉시 저장하기
    git commit -a 'message'
  • 스테이징 영역의 변경사항을 저장하며 메세지 남기기
    git commit -m 'message'

작업이 끝난 코드의 변경 사항을 스테이징 영역에서 마지막으로 커밋 메세지와 함께 깃 저장소 영역에 저장함으로써 코드 수정(또는 개발)을 종료합니다.

로컬 저장소에서 원격 저장소로 밀어넣기

  • git pull origin main(또는 master)

주요 명령어

  • git checkout: Switch branches or restore working tree files(브랜치를 옮기거나 작업 트리의 파일들을 복원)
  • git switch: Switch branches
  • git restore: Restore working tree files
profile
안녕하세요 :) 1년 차 Pythonist 백엔드 개발자 윤서준입니다.

0개의 댓글