티스토리 뷰

Dev

Git과 Github란?

DevDiana 2024. 8. 19. 21:47

안녕하세요.

오늘은 버전관리 시스템(VCS: Version Control System)의 대표격인 Git과 Git의 지원 서비스중 하나인 Github에 대해 정리해보려고 합니다.

 

1. Git 이란?

Git! 아마 개발자라면 들어볼 수 밖에 없는 단어죠?

Git은 프로젝트 관리에 자주 사용되는 버전관리 시스템 중 하나로 소스코드의 변경 기록을 효과적으로 관리할 수 있게 도와줍니다.

 

근데 분명 Git 이전에도 버전관리 툴은 존재하지 않았을까요? 그리고 수 많은 버전관리 툴 중에 왜 Git이 많이 쓰이는걸까요?

 

여기에는 여러 이유가 있는데 그 중 하나는 Git 이전의 버전관리 툴이였던 Subversion과 그 비슷한 툴들의 경우 저장방식이 비효율적이였기 때문입니다. 해당 툴들은 소스코드의 수정이 발생한 경우 수정이 발생한 파일을 모두 데이터 베이스에 저장하였는데 이 경우 모든 파일을 매번 중복 저장하게 된다는 문제와 이후 수정 부분을 일일이 찾아야한다는 번거로움이 존재했죠.

 

Git은 이런 파일변화기록 방식(델타 기반 버전관리)과 달리 수정된 미세한 부분만을 찾아내여 스냅샷으로 저장하는 스냅샷(Snapshot) 저장방식을 사용하였고 덕분에 보다 데이터를 효과적으로 관리할 수 있습니다. 

 

2. Git과 Github의 차이점

우리는 종종 Git과 Github를 동일한 개념으로 착각하곤 하죠?

 

하지만 둘은 구분되는 개념으로 소스코드의 변경사항을 로컬에서 관리하는 것을 Git이라 부르며 그 Git들이 가장 많이 저장되어 있는 저장소이자 업로드, 공유 등의 서비스를 지원해주는 웹 호스팅 서비스를 Github라고 합니다.

 

현재의 Github는 Git의 저장, 공유 등의 서비스 뿐만이 아닌 해당 소스코드에 대한 Comment, Wiki 등을 작성할 수 있는 기능도 지원하고 있어 현업에서 굉장히 유용하게 사용되고 있죠.

 

3. Git의 3가지 상태

Git에는 아래와 같이 3가지 영역과 상태가 존재합니다.

1. Working Directory (Modified 상태)

Working Directory는 Git의 핵심으로 로컬에 존재하는 Git이 추적할 수 있는 Repository를 말합니다.

해당 디렉토리는 처음 프로젝트 디렉토리에서 git을 init하거나 원격 디렉토리(Remote Directory)에서 git을 clone 해온 경우 생성되며 이는 소스파일 내부 생성되는 .git 파일로 확인할 수 있습니다.

(해당 파일은 주로 숨김 처리 되어있으며 맥의 경우 cmd + shift + "." 으로 확인할 수 있습니다)

 

2. Staging Area (Staged 상태)

Working Directory에서 소스코드를 수정했다면 Commit 전 우리는 해당 데이터를 Staging Area에 올리게 됩니다.

이 Staging Area는 다른 VCS와 Git의 차이점 중 하나로 수정사항을 모두 Commit 해야하는 다른 VCS들과 달리 Git에서는 Commit하고 싶은 원하는 수정사항을 골라 Staging Area에 올려 부분 Commit을 준비할 수 있습니다.

 

3. Repository (Commited 상태)

24b9ab6331262531aa423b12f8706cd6d3b00362

이후 수정사항을 Commit하게 되면 해당 데이터는 Git 레포지토리에 저장되며 이는 영구저장 됩니다.

이 데이터는 이후 원격 레포지토리에 업로드하여 공유가 가능한데 그 전에 내가 Commit한 기록을 보고싶다면 "git log" 커맨드로 위와 같이 해시 형태로 저장된 Commit 기록을 확인 할 수 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함