[Git] Git의 공간 개념과 명령어

소이뎁·2023년 11월 30일
0

Git

목록 보기
2/6

📍 Git의 공간 개념 및 주요 명령어

  • Local (작업 공간 - ex. 내 컴퓨터)
    • Working Directory: 코드를 작성하고 수정하는 공간
    • Staging Area: Local Repository에 저장할 사항만 올려두는 공간
    • Repository: 저장 공간
      • Branch: Local Repository 내부에서 작업을 분리하여 독립적으로 진행하기 위한 공간, Branch 간 전환 가능

  • Remote (협업/공유/백업을 위한 공간 - ex.GitHub, GitLab, Bitbucket 등)
    • Repository: 저장 공간, origin(별칭)
      • Branch: Remote Repository 내부에서 작업을 분리하여 독립적으로 진행하기 위한 공간, Branch 간 전환 가능

이미지 출처

👉 주요 명령어의 코드 이동

  • add: Working Directory -> Staging Area
  • commit: Staging Area -> Local Repository
  • push: Local Repository -> Remote Repository (변경 사항)
  • pull: Remote Repository -> Local Repository (변경 사항)

👉 Git의 파일 상태

📍 명령어

  • 설치 및 설정

    • init: 새로운 Git Repository(Local, Remote)를 초기화한다.
    • clone: Remote Repository의 내용을 Local(개인 컴퓨터)에 복제하여 가져온다.
  • Branch 및 병합

    • checkout: Working Directory를 특정 Local Branch로 전환하거나, 특정 파일을 특정 commit으로 복원한다.
    • merge: 여러 개의 Branch에서의 변경 사항을 하나로 합친다. merge 당하는 Branch에서 merge를 수행해야 한다.
    • stash: Working Directory의 수정 사항을 저장하고 현재 활성화된 Local Branch의 가장 최근 commit(HEAD commit)으로 Working Directory 복구한다. stash는 각 Local Branch 별로 독립적으로 관리된다.

👉 참고하면 좋은 사이트

📍 헷갈릴 수 있는 것

  • .git 폴더는 Git이 버전 관리 및 변경 이력을 관리하는 데 필요한 정보를 담고 있다. git init, git clone 시 생성된다.
  • Git 초기화(init) 시, Local Repository에 자동으로 master/main branch가 생성된다.
  • .gitignore 파일은 Repository 전체에 영향을 미치는 설정 파일이다.
  • 이미 commit된 파일은 추후 .gitignore 파일에 추가되더라도 그 이후의 변경 사항이 계속 추적된다.
  • add, commit은 Local에서의 과정이다.
  • push는 Local Repository 내부의 어떤 경로에서 실행하든 동일한 결과를 가져온다.
  • 로컬의 파일은 최근 변경된 branch로 열린다. 만약 파일이 main branch에서 최근에 변경되었다면, 해당 파일은 main branch의 최신 버전으로 열린다.

📍 일반적으로 따르면 좋은 것

  • Local Repository의 master/main branch에는 commit하지 않는다. develop branch에서 작업 후 commit하고, master/main branch에는 안정적인 코드만 merge한다.
  • workspace 폴더에는 .metadata 폴더와 Remote Repository에 올릴 필요가 없는 파일들이 있기 때문에 Working Directory로 설정하지 않는 것이 좋다.
  • .metadata 폴더, *.class 파일은 항상 .gitignore 폴더에 포함한다.
  • commit을 되돌리기는 하지 않는 것이 좋다. 대신 코드 수정 후 다시 add, commit을 한다.
  • Remote Repository에 push할 때 순서
    • 최선책: pull -> 코드 수정 -> commit -> push
    • 차선책1: 코드 수정 -> stash -> pull -> stash 적용 -> commit -> push
    • 차선책2(충돌 발생 여지 있음): 코드 수정 -> commit -> pull -> push
  • 실무에서는 Dev계(개발 목적), Stage계(테스트 목적), Real계(실제 운영 목적)를 사용한다. Dev계는 Dev DB를, Stage계와 Real계는 Real DB를 사용한다.

References

🔗 https://www.explainthis.io/en/swe/git-flow
🔗 https://git-scm.com/docs

0개의 댓글