오늘(8/9)이 정말 에이블스쿨 교육 시작날!
Git에 대해 생활코드의 이고잉님이 강의해 주셨다. Github는 자주 다뤄봤지만, Git에 대해서는 잘 모르는 나.. 강의 중 생소한 내용이 많았다.(이론적인 것 거의 몰랐숨다..) 협업에 필수니 꼭 숙지하자!@
믿고 보는 이고잉님, 유머러스하고 강의력 최고였다. 이번 강의만 한다고 들었는데 한 달만 더 해주시면 안되나요?? plz~
1. GIT이란?
Git은 4세대 IT프로젝트 관리도구로 컴퓨터 파일의 변경사항을 추적하는 버전관리 시스템이다. 버전관리 시스템의 5세대 논의가 없을 만큼 깃은 최고다! 앞으로 30년은 더 쓸 수 있다고..! 한다
버전관리 시스템이 중요한 이유로는 .. 만약 1억개의 파일 중 3개를 수정하고 한 달 뒤에 보면 무엇을ㅋㅠㅋㅠ 수정했는지 알 수가 없다.(천재가 아닌 이상?) but! 버전관리 시스템, Git을 사용한다면 어떤 파일을 수정했는지, 파일 내 어떤 부분을 수정했는지에 대해 쉽게 파악이 가능하다.
2. Git Graph
일단 Git 공부를 하기 전에 좋은 확장 프로그램 소개~
Git Graph는 VScode에서 GUI를 통해 현재 깃 상황을 볼 수 있는 확장프로그램이다. 설치를 완료하고 VScode 왼쪽 하단에 버튼을 누르면 현재 파일의 로그를 터미널이 아닌 GUI 형식으로 볼 수 있다.
GUI로 보니 깃이 만만해보이는 건 기분 탓? 역시 모든 건 도구빨이다..
3. 용어 & 중요한 내용 설명
- add : 커밋 대기 상태를 만든다.
- stage area : 커밋 대기 상태
- Git은 "커밋 대기 상태에 있는 것"만 새로운 버전으로 만든다.
- head : 현재 버전 (헤드가 가리키는 부분이 부모)
- main: 마지막(최신)버전
- checkout : 헤드를 움직이게 한다.
4. Git 이론
- 저장소를 깃에게 관리를 시키면 Project Folder가 만들어진다.
- Initialize Repository를 하게 되면 Project Folder안에 .git 파일이 만들어진다. (.git을 repository라고 한다)
- .git폴더를 제외한 나머지 부분은 working directory 즉, 사람이 작업하는 공간이다.
- A파일만 수정하고 버전을 만들고 싶으면 커밋대기 상태로 만든다.
5. 여기서 커밋버튼을 누르게 되면 stage area에 있는 모든 파일이 repository에 들어가면서 버전이 생긴다.
6. B파일을 수정하고 커밋을 하면 버전이 새로 생긴다. 이 버전의 부모는 이전의 커밋(버전1)이 되며 부모-자식 관계가 형성된다.
버전관리 시스템이니 이전(과거)로 돌아가고 싶다면?
checkout으로 헤드의 위치를 옮기면 된다.
과거로 갈 때는 checkout을 이용하고 현재로 돌아올 때는 main을 더블클릭하면 된다. (헤드의 위치를 옮기는 것)
클릭하면 main주변에 파란 테두리가 생김!, head가 main이라는 뜻
근데 여기서 궁금한 점?
만약 v2(메인이 가르키는 버전)에서 체크아웃을 해버리면 ? (깃을 잘 모른다면 여기서 멘붕올수도 있음 ..)
head가 v2를 가르키게 된다. 이 상태에서 v3, v4를 만든다면 ?
head가 v4를 향한다.
why?? head는 현재 버전을 가리키니까!
여기서 checkout main을 해버리면 v3,v4는 존재하지만 존재하지 않은(?), 접근할 수 없는(?) 그런 일이 일어난다.
Git을 모른다면 v3,v4 버전을 날릴지도 모르지만 !!!! Git은 어떠한 버전도 지우지 않기 때문에 커밋 아이디를 이용해 checkout으로 다시 접근 가능하면 된다!! 이런 안정성이 보장되는게 Git의 장점 중 하나
여담으로
이고잉 강사님 팁 : 뭔가 쎄하다!? 느낌이 나면 커밋 아이디를 꼭 메모해두자 ㅋㅋㅋㅋ! or 그 순간 작업을 그만두고 팀의 에이스에게 부탁하자 ...ㅋㅋㅋㅋ
5. Branch
Branch는 하나의 저장소 안에서 여러 개의 작업을 동시에 할 수 있도록 해준다. 실험을 여러 곳에서 하다가 실패하면 그 Branch는 삭제해버리고 또 다른 실험을 하면 된다. 이것이 Branch의 용도!~!
이를 간단하게 보자면
헤드가 가리키는 곳에 Create Branch를 통해서 Branch를 만든다.
그럼 아래와 같이 한 저장소에 두 개의 Branch가 생긴다.
여기서 실험을 해보고 싶다면 exp1으로 checkout한 뒤에 작업을 진행하면 된다.
exp1에서 exp1을 커밋하고, main에서 main1을 커밋을 하면 아래 그림과 같이 따로 진행되는 것을 볼 수 있다. 즉, 두 개의 평행우주가 생겼다는 것
만약 실험을 성공해서 이것을 하나의 우주로 만들고 싶다면?
이 질문에 대한 답은 다음 포스팅으로 찾아오겠습니다~~
'교육 > KT 에이블스쿨' 카테고리의 다른 글
[KT AIVLE] 분류모델 성능평가지표 (0) | 2023.12.13 |
---|---|
[KT AIVLE] 회귀모델 성능평가지표 (0) | 2023.12.13 |
[KT AIVLE] 1주차 - Python 프로그래밍 & 라이브러리 #4 (0) | 2023.08.20 |
[KT AIVLE] 1주차 - Git② #3 (0) | 2023.08.19 |
[KT AIVLE] 오프닝데이 후기 #1 (0) | 2023.08.08 |