본문 바로가기
Programming/Git

Git[2] : Git 시작

by 드가보자 2024. 2. 8.

모두의 깃&깃허브 라는 교재로 공부했습니다.

 

Version 관리에서 3가지의 용어가 중요하게 쓰입니다.

 

1 ) Working Directory 

2 ) Stage 

3 ) Repository

 

여기서 1) 은 실제로 코드를 수정하고 마음대로 변경하는 내 작업공간이라고 생각하면 된다. 

100개의 파일이 있고, 100개의 파일을 내가 마음대로 수정한다. 

 

내가 이제 version을 하나 찍어내야하는데, 100개의 파일 중 딱 2개만 마음에 든다면

해당 2개의 파일만 Stage 단계까지 올린다음에, 

Stage 단계에 있는 파일로만 verison을 만든다.

즉 Stage는 다음 Version이 될 후보들이 올라가 있는 공간이라고 생각할 수 있다. 

 

Stage에 있는 파일들을 바탕으로, 저장소에 Verison을 만드는 것을 "commit"한다 라고 표현도 한다.

 

c:\git-test 라는 저장소를 만들고, a.txt , b.txt, c.txt 3개의 text파일을 만든다. 

 

그러면 SourceTree에 Working Directory에서 Stage에 올라가지 않은 파일이라고 3개의 txt파일을 보여준다. 

 

모두 스테이지에 올리기 버튼을 눌러서 3개의 파일 모두 Stage로 올려준다.

 

 

Stage에 3개의 파일을 올렸고, 이 3개를 기반으로 Repository에 새로운 version을 만들어 보고자 한다.

그러기 위해서는 commit하는 과정을 거쳐야하고, 왼쪽 하단에 보면 commit 버튼이 있다.

 

그리고 채팅창 같은 ?? 내용을 입력할 수 있는게 있는데 

commit message라고 내가 어떤걸 수정했는지, 어떤걸 삭제했는지 협업하는 사람들 혹은 나중의 내가 확인할 수 있을 만한 메세지를 남겨놓는 것이다. 

 

 

위와 같이 commit message를 적고, commit버튼을 땅 누른다. 

 

Branch가 하나 생성되고, commit message를 확인할 수 있다. 

 

이번에는 a file을 수정하고, c file을 삭제해보겠다. 그러고 Source Tree를 다시 확인해보면 

커밋하지 않은 변경사항이 확인이 되고, 

stage에 올라가지 않은 파일 부분에 c가 삭제된 것과, a file이 수정되었다는 것을 눈으로 볼 수 있다. 

 

이번에 e.txt 라는 파일을 새로 만들어 보겠다. 

 

만드니까 이번에는 + 모양 같은 것도 아니고, ? 라는 모양이 뜬다.

git이 봤을 때는 눈여겨 보고 있던 파일, 즉 버전을 추적하고 있었던 파일이 아니라 당황스러운거다.

그래서 ?  라는 표시를 나타내고, 추적하고 있지 않는 파일 Untracked file이라고 설명한다. 

 

그런데, git으로 버전 관리를 하고 싶지 않은 파일들이 있을수도 있다. 

이 때는 .gitignore파일에 해당 파일을 추가하면된다. .gitignore 은 "무시할 파일들의 목록" 이다. 

 

.gitignore 파일을 만들고, 해당 파일에 f.txt 을 적어둔다. 

그리고 f.txt 파일을 만드는데 

이 때, .gitignore은 아직 version에 추가하지는 않았지만 f.txt파일을 무시해준다. 

분명 f.txt 파일도 만들었는데 .gitignore으로 인해서 무시되는 것을 확인할 수 있다. 

 

마찬가지로 .gitignore은 폴더를 통으로 무시할 수도 있다.

 

만약 KKK 라는 폴더를 만들고 안에 aa.txt, bb.txt, cc.txt를 만든다고 가정하고 

 

.gitignore에 KKK\ 를 추가해주면, KKK 폴더안에 모든 파일이 무시된다.

 

커다란 프로젝트들을 수 많은 commit들이 모인 프로젝트이다. Tensorflow는 10만개 , Linux 운영체제는 100만개 이상의 커밋들이 모인 초대형 프로젝트다. 

 

이 수많은 커밋들을 어떻게 구분 할 수 있냐? 바로 commit이다. 각 commit은 고유한 Hash 값을 가진다. 

 

 

커밋 쪽에 있는 긴 알파벳이 바로 Commit Hash 값이다. 

 

Web Service를 예로 Commit들을 쭉 쌓아가면서 개발하다가 User들한테 릴리즈를 할 때 

특정 commit기준으로 release를 해야한다. 

이 때 해당 commit의 hash값을 기준으로 "123ljhk21hhkg123 version release합니다" 

라고 말할수는 없으니, 특정 commit에 tag라는 꼬리표를 단다. "Version 1.0.0 release 합니다"

이런 식으로

 

원하는 Commit을 선택해서, 태그를 누른 다음 v1.0.0 이렇게 tag를 붙일 수 있는 것이다. 

 

 감사합니다 ^_^

'Programming > Git' 카테고리의 다른 글

GIT[3] : Version  (1) 2024.02.08
Git[1] : Git이 무엇?  (2) 2024.02.08