[Git] Git에 대해 공부

jaehyeonLee·2024년 10월 10일
0

이번에 오픈소스소프트웨어 수업에 Git 과 관련하여 배우고 있어 Git 에 대해 작성해보도록 하겠다

Git

Git의 특징

버전 간의 차이가 아닌 스냅샷을 저장

-대부분의 VCS(버전관리시스템)파일의 변화를 시간순으로 관리하면서 파일들의 집합을관리를 한다.
Git은 데이터를 파일시스템 스냅샷의 연속으로 취급하기에 커밋하거나 프로젝트의 상태를 저장할 때 마다 파일이 존재하는 순간을 중요하게 여긴다.
이전상태의 파일에 대한 링크만 저장을 한다.

스냅샷 방식 : 하나의 파일에 변동이 생겼을때 파일의 상태 "전체"를 그대로 저장해 비교

거의 모든 명령을 로컬에서 시행

거의 모든명령을 로컬에서 실행을하기에 다른컴퓨나 네트워크 연결이 필요없다
예를 들어 Git 은 프로젝트의 히스토리를 조회할때 서버없이 조회가 가능하다
오프라인 상태이거나 VPN에 연결하지 못하더라도 작업이 가능한데 이는 다른 VCS 시스템에서는 불가능한일이다.

무결성

데이터를 저장하기전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다.
Git 없이는 어떠한 파일이나 디렉터리도 변경이 불가하다
Git은 파일을 이름이 아닌 해당 파일의 해시로 저장을한다 .

체크섬

Git에서 사용하는 가장 기본적인 데이터 단위이자 Git 의 기본철학
체크섬을 다룰 수 없다면 파일의 상태도 알수없고 데이터를 잃어버릴수있다.

데이터를 추가하기만 함

Git 으로 하는 모든 행동이 Git 데이터 베이스에 추가가 되기에 되돌리거나 데이터를 삭제할 방법이 없지만 커밋하지 않으면 변경사항을 잃어버릴수있다.

Git 기초 - 세가지 상태

Git 은 파일을 세가지 상태로 관리를 한다.
Committed: 데이터가 로컬 데이터베이스에 안전하게 저장되었다는것을 의미
Modified: 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은것을 의미
Staged: 현재 수정한 파일을 곳 커밋할것이라고 표시한 상태를 의미

위의 세가지 상태는 Git 프로젝트의 세가지 주요 부분과 연결이 된다.
Git 디렉토리: Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는곳
워킹트리: 프로젝트의 특정버전을 Checkout 한것
Staging Area(준비구역): 디렉토리에 있으며 , 곧 커밋할 파일에 대한정보를 저장

Git으로 하는 일

워킹트리에서 파일을 수정한다 .
Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만든다
Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장을한다.


[이미지 출처] http://devstory.ibksplatform.com/2017/09/git-1-git-git.html

Git 최초 설정 - git config

설정 내용을 확인하고 변경할수가 있다.

/etc/gitconfig 파일

시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고 쓸 수 있다. (이 파일은 시스템 전체 설정파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)

~/.gitconfig, ~/.config/git/config 파일

특정 사용자(즉 현재 사용자)에게만 적용되는 설정이다. git config --global 옵션으로 이 파일을 읽고 쓸 수 있다. 특정 사용자의 모든 저장소 설정에 적용된다.

.git/config 파일

이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용된다. --local 옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 하지만 기본적으로 이 옵션이 적용되어 있다. (당연히, 이 옵션을 적용하려면 Git 저장소인 디렉토리로 이동 한 후 적용할 수 있다.)

워킹디렉토리 안의 파일들의 라이프사이클

[이미지출처] https://kimvampa.tistory.com/124

UnTracked
디렉토리안에 있더라도 Git 의 관리대상이 아닌 파일 들이 해당이된다.

UnModifed
commit 된 파일 중 수정을 하지 않은 파일을 의미한다.

Modified
파일을 수정한 상태이다. UnModified 상태의 파일을 수정을 하게되면 Modified 상태 파일이된다.

Staged
commit 을 하고자 하는 파일의 상태이다.

profile
이재현의 필기노트

0개의 댓글