Programming을 처음 접하는 저로써는 Git과 Github가 똑같은줄 알았다... 😂
Git을 공부하면서 이 둘은 똑같이 VCS - Version Control System
(버전 관리 시스템)이지만 완전히 다르다는걸 배웠다. 이번 포스팅에서는 이 둘이 어떻게 다른지 알아보고 Git이 어떻게 작동 하는지 알아보자!
- 로컬 방식으로 관리되는 버전 관리 시스템
- Source Code 수정에 따른 버전을 관리해주는 시스템
- (Source Code: 컴퓨터 소프트웨어 제작에 사용되는 설계 파일. 추상적인 설계도가 아니라 당장 컴퓨터에 입력하면 진짜 프로그램을 완성할 수 있는 설계 파일.)
- 클라우드 방식으로 관리되는 버전 관리 시스템
- 로컬 자체 구축이 아닌 클라우드를 빌려쓰는 시스템
- 로컬 git 자료들을 다른 사람들과 공유하거나 백업해놓을 수 있는 웹사이트
- 프로젝트 협업 시 팀원들과 github을 통해 서로의 코드를 가져오고 공유
Git을 잘 이해하고 활용할려면 Git의 workflow를 잘 이해해야 한다.
Git에는 크게 3가지 작업 환경이 있다.
Working Directory
- Project file들을 수정하고 작업하는 곳
Staging Area
- 작업을 하고 version history에 저장할 준비가 된 파일들을 옮겨 놓는 곳
.git Directory
- 버전의 히스토리를 가지고 있는 곳
위 사진을 보면 프로젝트 파일들을 working directory
에서 작업하고 있습니다.
작업을 하다가 B 와 C 파일들은 어느정도 준비가 되었다면 위 사진처럼 B 와 C를 staging area
로 옮겨놓습니다.
commit
이라는 명령어를 써서 staging area
에 있는 파일들을 git version history에 저장하게 됩니다.
checkout
이라는 명령어를 쓰면 언제든지 다시 working directory
로 돌아갈 수 있습니다.
이렇게 저장된 git history는 내 컴퓨터에만 저장되어 있게 됩니다. 이런 경우 내 컴퓨터에 문제가 생기면 git history를 다 잃어버릴 수도 있습니다.
이런 경우를 대비해서 push
이라는 명령어를 써서 github같은 클라우드에 업로드 해놓을 수 있고 pull
이라는 명령어를 써서 다시 로컬로 다운로드 받을 수도 있습니다.
더 세부적으로 working directory
는 untracked
그리고 tracked
로 나누어 집니다. Git이 이미 알고 있거나 트레킹하고 있는 파일들은 tracked
로 분류가 되고 새로 만들어진 파일이거나 기존에 존재하던 파일에서 git을 초기화하게 되면 git이 파일에 대한 정보가 없기 때문에 untracked
로 분류가 됨.
Git이 트래킹하고 있는 파일들 중에서도 이 시점에 수정이 되었는지 안되어 있는지 따로 unmodified
그리고 modified
로 분류하게 됩니다.
수정이 된 modified
파일들만 staging area
로 옮겨갈 수 있습니다!
Reference
https://www.youtube.com/watch?v=Z9dvM7qgN9s&t=577s