리얼라이져의 마케팅, 개발, 창업 블로그

git 공부 (4)탄 본문

IT/문서관리

git 공부 (4)탄

nadadhl 2020. 2. 9. 23:38
728x90

git 공부 (1)탄 에서는  git 소프트웨어 설치에 대해서   정리했다.

git 공부 (2)탄 에서는  git에 대해서  간략하게  정리해보았다.

git  공부 (3)탄 에서는  git 저장소 만들기를  정리했다.

 

 

 

이번엔  git 으로  하는 기본적인  문서  버전관리 를  정리 해보도록  하겠다.

 

git  공부 (3)탄 에서는   git  repository(저장소)를  만드는 것 까지 진행하였다.

 

 

 

git 은  버전관리를  할때  총  세가지 영역으로  구분된다.

 

 

 

1. 작업 트리

파일  수정 ,   저장을  할수 있는 디렉터리 이다.

 

일반적으로  우리가  파일을  만들고, 수정 하고  저장하는 공간이다.
이전에 git  공부 (3)탄 에서  leedonghun-git이라는  폴더를  만들고 
git-init 을 해서
그안에  git  저장소를 만들어줬다
이때  leedonghun-git 폴더가   작업 트리가 될수 있다. -> 여기에 파일을 만들고 수정을 할거니까...

 

 

 

2. 스테이지

작업트리에서  수정한  파일을   버전 파일로  만들고 싶을때, 

버전으로 만들 파일을  대기 시키는 곳이다. 

 

예를들어,  작업트리에서  2개 파일을  수정했다.

그중  1개의 파일을   버전으로 만들고 싶을때 그 파일을  스테이지로 넘겨주면 된다.

 

버전이란??

무엇인지  모른다면,  git 공부 (2)탄을  가서  git의 대한  간략한  정리를 해보면  좋을것  같다. 

 

 

 

 

3. 저장소

repository라고도 부르며, 

스테이지에서  버전 파일이 되기  위해  대기하던  파일들을  버전으로 만들어  저장하는 곳이다.

(최종 장소라고 볼수 있다.)

 

 

그럼  이번 글에서는 

hello.txt 라는 파일을 만들어서  스테이지에 넘기고  저장소에 넘겨  

버전화 시키는 것 까지  다뤄 보겠다.

 

 

 

그럼  시작  !


우선,   작업  트리에  hello.txt 파일을 생성해 보겠다.

hello.txt라는  파일을  만들어서 작업트리로 쓰려고 했던  leedonghun-git 폴더에  넣어보겠다.

 

 

hello.txt 파일은 

vim 에디터를 사용해서  직접 커맨드 창에서  hello.txt를  만들어 보겠다.

 

이렇게 필자는  hello.txt 에  '첫번째  파일'이라는  내용을 담아  만들었다..

※cat  명령어를  사용하면  해당 파일의  내용을 볼수가 있다. 

 

 

 

이렇게 파일을 만든 뒤,  git  status 라는 명령어를  넣게 되면,   

현재  파일들의   상태를 보여준다. 

※여러 종류의 상태가  있으므로  계속 진행하면서  설명하겠다.

 

 

우선,  위 처럼 새로운 hello.txt 파일을  만든 뒤,  

git status라는  명령어를  넣어보겠다. 

명령어를  넣으면,  위와 같이  보이게된다.

 

우선 세세히 보자면, 

 

on  branch  master ->  현재 브랜치가  master에 있다는 건데,  -나중에  브랜치 관련 글에서  설명하겠다.

 

No commits yet -> 말 그대로  아직  아무런 commit 내역이  없음을  의미한다. 

 

Commit 이란? 깃에서 commit은   저장소로  저장되는  새로운 버전의  파일 이라  볼수 있을 것 같다.

                    좀더 정확히는  git은  버전관리를 위해  새롭게 수정된 파일의 시점을  스냅샷으로  저장한다고 한다.

                    이런  각  시점을  찍은 스냅샷을  커밋이라고 부른다고 한다.

                    이렇게 각 시점을  찍은  스냅샷을  통해  수정전  버전  수정후  버전 등을 가지며,

                    버전관리가 가능하다고 한다.

   

 

Untracked files ->  작업트리에 있는 파일들은  이전에  버전관리가  진행됬던 파일과  안되었던 파일로 나

                           뉠수 있다. 

                           이전에  commit을  해서  버전관리를  하는  파일이라면,  tracked file

                           그런적이 없는 파일이라면  untracked file로  나눠진다.

                           hello.txt의 경우에는 방금  만들어낸  파일이기 때문에  untracked file이라고 뜬다.

 

 

 

 

그렇다면,  이제  새로운 파일(hello.txt)이 작업트리에    만들어졌으니, 

최종적으로   현재 파일을  저장소에 commit 하기 전 대기 장소인  스테이지로 넘겨 보겠다.       

  ※why?그런데 왜 스테이지 라는 중간 장소가 존재 할까??

           작업트리에서 파일들을  수정하고,  바로 commit 하면되지 않을까??

           이런 의구심이 있었다.

           조금 찾아본 결과  스테이지의  필요성 중  하나는  

           작업 트리에서  수정한  파일을 바로 커밋 하지 말고

           그  수정 버전의 파일을  커밋하기전에  스테이지에 남겨두고

           작업 트리에서  또 수정을 가하면,  아직  커밋하지 않았지만,  이전  수정 파일과

           현재 수정파일을  가지고 있을수 있으며,    최종  커밋을  어떤 것으로 할지  고민해 볼수 있다 이다.

           물론,  다른 이점들도 많을 것이다.  나중에 다뤄보도록 하겠다.

 

 

스테이지로 파일을 보내기 위해선   git  add '파일이름' 을  적어주면된다.

※이렇게 하면,  간혹   위 warning문구가  나올수 있는데, 

리눅스에서는  개행 문자 (줄바꿈 문자) 가 LF 문자이고  윈도우에서는 CRLF라고 한다. 

그래서 윈도우를 사용할때는  LF가  CRLF로 바뀔수 있다는 경고문이 나온다.

깃은  리눅스 명령어를 기반으로 사용되기 때문....  

 

이렇게 하고  다시  git status 를 보면 아래와 같이 나온다. 

 

changes to be committed->  커밋이 될   수정된  의미이다. -> 파일이 staged된  상태라 볼수 있다.

 

그리고  새롭게 만들어서  처음으로 commit을 할  파일이기 때문에  new file이라고  적혀있다.

 

 

이제  바로  스테이지에  파일을  대기 시켜 놨으니  커밋을  해서 저장소에  넣어보겠다.!

commit 명령어는   git commit -m "커밋 메세지" 이다.

 

커밋 메세지는  현재 버전에서는  무엇을  했는지  구별하기 위한  메세지를  넣어주면 된다고 한다.

일단 나의 경우는 간단하게  '첫번째 커밋' 이라고 적었다.

그리고 다시 git status 를  치게 되면,  commit 할께  아무것도 없고 작업트리도  clean하다고 나온다.

 

commit 한   로그도 볼수 가있는데,  git log 쓰면  아래와 같이 나온다. 

누가  commit 했으며,  언제  commit을 했는지  나온다,  

맨위 commit  옆은  해쉬값은  commit해쉬라고 하는데  다음에   사용법을  알아보겠다..

 

 


<git관련 공부 내용은   -Do it - 깃&깃허브 입문 책을  기반으로  공부하여  작성하였습니다.>

 

 

 

끝~

 

개발자가 되기 위해  공부 중인  비전공자  학생입니다. 
아직 부족하여,  부족하거나  틀린 내용이 있을수 있으니, 
그부분에 대해서  생각을  댓글로 공유해주시면 

감사하겠습니다.^^

  

'IT > 문서관리' 카테고리의 다른 글

GitEmoji 사용하기  (0) 2023.09.10
git 공부 (5)탄  (0) 2020.04.06
git 공부 (3)탄  (0) 2020.02.01
git 공부 (2)탄  (0) 2020.01.30
git 공부 (1)탄  (0) 2020.01.01
Comments