본문 바로가기
개발/Git, Github

[git] git 기본 개념

by 77monkey 개발자 2023. 8. 23.
반응형

git은 정말 많이 사용되는 버전 관리 시스템입니다. 지옥에서 온 관리자라고 불릴 만큼 매우 어렵습니다. 하지만 천천히 접근을 하게 된다면 어느 정도 적응이 되고 활용할 수 있습니다. 

 

git 정의

Git은 버전 관리 시스템으로 프로젝트의 소스 코드와 파일 변경 내역을 효과적으로 관리하고 추적할 수 있는 도구입니다. 

 

git 필요성

아마 대학교 때 이런 경우 한 번쯤은 있으셨을 것입니다. 파일의 제목을 "최종의 최종의 최종의 마지막의 끝판왕 버전"과 같이 지어보신 적 있으시지 않나요? git이 있다면 이런 어려움 없이 간단하게 버전을 관리할 수 있습니다. 아직은 감이 안 잡히실 수 있는데  써보시면 분명 git의 매력에 빠지실 겁니다. 

이것 외에도 원격 서버에 파일 등을 저장하기 때문에 언제 어디서든 파일 등을 접근할 수 있습니다. 이런 기능이 필요 없다고 생각할 수 있는데, 클라우드를 생각하시면 이해하기 쉬우실 것 같습니다. 클라우드에 올려둔 정보를 언제 어디서나 접근할 수 있다는 이점이 바로 git에도 적용됩니다. 

 

git의 3가지 작업 영역

아래 그림을 이해하면 정말 다 이해한 것이다. 그만큼 아래 work tree, stage arear, repository가 중요합니다. 

 

git의 3가지 작업 영역

 

work tree

git 프로젝트의 실제 파일과 디렉토리가 저장되는 디렉터리입니다. 이 디렉터리에서 파일을 수정하고 새 파일을 생성하는 등의 작업을 수행할 수 있습니다. work tree는 실제 코드 작업이 이루어지는 공간으로, 프로젝트 파일들이 있는 곳입니다.

 

stage area

작업 트리의 변경 내역 중에서 커밋하고자 하는 변경 사항을 선택하여 준비하는 곳입니다. 임시 공간이라고 생각하시면 좋을 것 같습니다. 변경된 파일들 중에서 어떤 파일의 변경 내역을 다음 커밋에 포함시킬지를 선택하는 단계입니다. git add 명령어를 이용하여 stage area에 추가할 수 있습니다. 

 

repository

repository는 저장소라고 불리우며, git의 핵심 데이터베이스입니다. 프로젝트의 모든 버전 정보와 이력이 저장되는 곳으로, 커밋된 스냅샷, 브랜치 정보, 태그 등이 저장소에 포함됩니다. 모든 변경 사항은 저장소에 커밋으로 저장되며, git의 강력한 기능 중 하나는 커밋을 통해 프로젝트의 모든 상태를 추적하고 관리할 수 있다는 점입니다.  git commit 명령어를 이용하여 repository에  커밋을 만들 수 있습니다.

 

git add

git add는 git에서 파일을 추적하거나 변경 내역을 staging area에 추가하는 명령입니다.

예를 들면 아래와 같이 커맨드를 입력하게 됩니다. test.c가 work tree에 있게 되는데 git add를 통해서 stage area로 이동하게 됩니다. 

$ git add test.c

test.c가 stage area에 있지만, work tree에서 추가로 test.c를 수정할 수 있습니다. 수정한 내용을 stage area에 반영하려면 git add command를 이용합니다. stage area에 추가되었다는 것은 repository로 갈 자격이 주어졌다는 것입니다. 단지 work tree, 즉 작업 공간에서 작업하는 것을 임시 공간에 저장한다고 생각하시면 됩니다.

 

git commit 

git commit는 repository, 즉 저장소에 commit(커밋)하는 작업을 수행합니다. 

commit(커밋)
프로젝트의 특정 시점의 상태를 저장하는 것으로, 변경 내용의 스냅샷을 생성하고 이를 저장소에 영구적으로 기록하는 것을 의미합니다.

예를 들면 아래와 같이 커맨드를 입력하면  test.c가 stage area에서 repository로 이동하게 됩니다. 그리고 커밋이 하나가 생성이 됩니다. git add와 다르게 이번에는 옵션도 생기고 좀 복잡해 보입니다. 간단하게 풀어쓰면 commit을 만들 예정인데, message를 "add test.c"로 해서 만들어주라는 의미입니다.

$ git commit -m "add test.c"

 

test.c 파일이 commit이 되었다고 해서 사라지거나 없어진 것이 아닙니다. 원래 있던 그곳에 그대로 test.c 파일은 있고, commit이라는 형태로 있는 것입니다. 그래서 해당 커밋을 지우거나 revert 시키면 test.c 파일은 work tree에서도 사라지게 됩니다. 하지만 아직 배우지 않은 것들로 머리 아파하지 않으셨으면 좋겠습니다. 

 

마무리

git에서 가장 중요한 work tree, stage area, repository에 대해서 알아보았습니다. git 기본 개념만 이해하면 나머지는 이제 상대적으로 쉽습니다. git add, git commit에 대해서는 다른 페이지에서 다시 다루도록 하겠습니다. git의 3가지 작업영역에 대해서 잘 이해하시면 오늘의 목표는 성공입니다. 관련해서 질문이 있으면 말씀 부탁드립니다.

git 기본 개념

 

반응형