본문 바로가기
코딩 아카이브/git 공부

[ Git 공부 ] #3 Git repository 만들고 상태 확인하기

by SteadyForDeep 2021. 3. 30.
반응형

//1

중요한 부분을 아직도 언급을 안했는데

git은 '분산형' 버전관리 시스템에 해당한다.

분산형이라는 말이 굉장히 중요하다.

 

프로잭트의 각 버전은

commit이라는 단위로 쪼개져서

프로잭트 참여자 모두에게 골고루 분산되어 있다.

 

라고 설명하면 되겠다.

 

 

그러니까 하나의 같은 버전에서 출발하여

완벽한 기준을 잡아두지 않고

각자 필요한 부분을 맡아서 버전업 하다가

나중에 한번에 합치는게 가능하다는 이야기다.

 

이게 github을 먼저 익히고 git을 익히는 사람들에게는

좀 독이 되는 부분이다...

github은 마치 중앙형처럼 사용되기 쉽기 때문.

말로 이해가 안된다면 일단 외우고 난 다음

진도를 계속 나가 보자.

 

 

//2 - 저장소 만들기

git에서 말하는 저장소repository는 무엇일까?

얼핏보면 프로잭트를 위한 파일들이 모두 모여있으므로

그냥 일반 디렉토리처럼 보인다.

 

맞다.

사실 그냥 디렉토리라고 해도 별 상관은 없다.

다만

저장소는 git에서 접속해서 참고할 수 있는

데이터베이스를 포함하고 있어야한다.

 

이 데이터베이스가

있으면 directory O, repository O

없으면 directory O, repository X

이렇게 볼 수 있는 것이다.

 

따라서 일반적인 방법으로 디렉토리를 하나 만들어 준 다음

거기서부터 하위목록들을 모두 프로잭트에 포함시킨다는 것만

git에게 알려주면

git이 알아서 그 위치에 데이터베이스를 만들고

그 지점부터 repository가 생기는 것이다.

 

많고 많은 방법들이 있지만

나는 튜토리얼용 리포지토리를 위와 같이 만들었다.

 

$ git init

 

을 하면 현재 디렉토리에 데이터베이스를 만들고

이 이하의 모든 자료를 프로잭트에 포함시킬 수 있다.

리눅스에서 .으로 시작하는 모든 자료는 숨겨지는데

이것까지 다 보여주는

 

$ ls -a

 

를 이용해서 .git 디렉토리가 생긴 것을 볼 수 있다.

이제부터 여기는 repository가 되었다.

 

 

//3 - 상태확인

갓 생성된 따끈따끈한 리포지토리에서

git이 어떤 상태 메세지를 주는지 확인해 보자.

 

$ git status

 

뻗어나간 가지가 없으니 master에 있고

아직 commit을 한 적이 없으며

지금 commit 할 내용도 없다.

 

완벽히 새로 생긴 저장소를 말해주는 표현이다.

 

여기서 알 수 있듯

디렉토리를 저장소로 바꾸었다고 해서

저장소 내의 모든 변화가 기록되는 것은 아니다.

프로잭트가 커지게 되면

git이 모든 변화를 감지하고 추적하여 기록하는 것이

굉장한 부담이 되므로

원활한 개발을 방해하는 요인이 된다.

따라서 우리는 git이 추적해야하는 파일들을

지정해서 알려주어야만 한다.

 

이게 나에겐 참 어려운 부분이었다.

아래 비유를 한번 보자.

 

초등학교에 다니는 철수user는 오늘 음악과 미술을 배운다.

준비물이 들어있는 가방repository안에는

교고서.h, 리코더.cpp, 케스터네츠.c, 고무찰흙.lib, 수수깡.c가 있었다.

미술시간이 되어서 선생님git은 찰흙판stage을 나눠주고

미술재료를 찱흙판stage 위에 올리라고 했다.

그리고 어떻게 만드는지 지켜보겠다tracked고 하면서

원하는 모양을 만들어 찰흙판stage에 올려서 제출하라고 했다.

철수user는 일단 고무찰흙.lib과 수수깡.c을 찰흙판stage에 올렸다add.

그리고 고무찰흙.lib를 찰흙판에서 책상으로 내려서unstage

변화를 주고 작업을 마무리 했다.

그리고는 제출하기 위해 다시 찰흙판stage에 올리고add

작품을 제출commit했다.

그날 철수user의 엄마는 선생님git에게 이런 통지서를 받았다.

"철수가

고무찰흙.lib, 수수깡.c을 어떻게 다루는지 기켜봄 tracked

네모난 고무찰흙의 모양을 길쭉하게 수정함modified

수수깡은 아무짓도 안하고 그대로 제출음unmodified

교고서.h, 리코더.cpp, 케스터네츠.c는 꺼내지 않아서

보지도 못했음 untracked "

 

그래 여기까지 하자..

 

반응형

댓글