Git 이란?
Git은 소스 코드를 관리하기 위한 분산 버전 제어 시스템이다. 버전 제어 시스템은 사용자가 파일을 수정할 때 변경 사항을 기록하고 저장하므로 언제든지 이전 버전의 작업을 복원할 수 있다.
코드에 대한 버전 제어 시스템이 없으면 다른 날짜와 이름을 사용하여 파일의 여러 버전을 수동으로 저장해야할 가능성이 높다. 또한 다른 사람들이 무엇을, 언제, 누구에 의해 변경되었는지 알 수 있도록 변경 내용을 맥락화하지 않는다. 즉 여러 구성원이 동일한 파일에서 작업하는 경우 덮어쓰기가 빠르게 문제가 생길 수도 있고 어떤 파일이 최신 버전인지 파악하기 어려울 수 있다. 그러한 문제를 해결하기위해 버전 제어 시스템을 사용한다.
Git을 사용하면 소스 코드의 수정 내역에 쉽게 액세스 할 수 있다. 버전이 어떻게 변경되었고 누가 변경했는지 확인할 수 있다. 전체 Git 기록이 공유 저장소에 저장되기 때문에 Git은 이전 버전에서 의도하지 않은 덮어쓰기를 방지할 수 있다.
Git과 같은 버전 제어 시스템을 사용하면 다음 작업을 쉽게 수행 할 수 있다. - Git을 사용하면 생기는 장점!
- 코드 기록 추적
- 팀으로 코드에 대해 협업
- 누가 무엇을 변경했는지 확인이 가능
Git 구성 요소
Git 프로젝트에는 세 가지 주요 구성 요소가 있다.
- 저장소
- Local Repository : 내 컴퓨터의 저장소
- Remote Resitory : 원격 저장소 - Github
- 워크 트리
- 작업할 파일이 있는 디렉토리
- 인덱스
- 커밋을 수행할 파일이 올라가는 영역
저장소는 프로젝트 파일의 모든 변경 사항을 추적하는 컨테이너이고 팀이 만든 모든 커밋을 가지고 있다. git log command를 사용하여 커밋 기록에 액세스 할 수 있다.
작업 트리 또는 작업 디렉터리는 작업중은 파일로 구성된다. 작업 트리를 파일을 보고 수정할 수 있는 파일 시스템으로 생각할 수 있다.
인덱스 또는 스테이징 영역은 커밋이 준비되는 곳이다. 스테이징이 되면 작업 트리의 파일이 저장소의 파일과 비교된다. 작업 트리의 파일에 대한 변경 사항은 커밋하기 전에 수정된 것으로 표시된다.
3가지 영역
Untracked area : Git이 관리하고 있지 않은 영역
Tracked area : Git의 관리를 받을 수 있는 영역
Staging area : Commit이 가능한 영역
출처: https://ittrue.tistory.com/94 [IT is True:티스토리]
기본적인 Git 워크플로
- 워크 트리에서 파일을 수정한다
- 다음 커밋에 포함하려는 변경 사항을 준비한다
- 변경 사항을 커밋한다. (커밋하면 인덱스에서 파일을 가져와 저장소에 스냅샷으로 저장한다.)
Git 파일의 세 가지 형태
Git 워크플로에서 짐작하듯이 파일은 다음 세 가지 상태 중 하나일 수 있다.
- 수정된 파일
- 스테이징된 파일 (커밋이 가능한 파일로, 커밋하기 전 파일을 담아두는 영역에 있는 파일)
- 커밋된 파일
파일을 수정하면 워크 트리에서만 해당 변경 사항을 볼 수 있다. 그런 다음 변경 사항을 다음 커밋에 포함하도록 준비해야 한다.
모든 파일 준비를 마치면 파일을 커밋하고 변경한 내용을 설명하는 메시지를 추가할 수 잇다. 그러면 변경 사항이 저장소에 새 스냅샷에 안전하게 기록된다.