오늘은 깃(git)과 깃허브(github)에 대한 기초적인 내용의 수업을 들었습니다.
혼자서 프런트엔드 개발을 공부하는 중에 Netlify를 통한 배포를 배우면서 이제는 git과 github를 미룰 수 없다는 생각이 들어서 Udemy에서 할인할 때 강의를 구매해서 들었는데 강의의 양이 많아 속성으로만 몇 개 배워서 쓰고 있었습니다.
하지만 혼자서만 작업을 하다보니까 협업을 하는 Git Workflow를 해본 적이 없었는데 오늘 pair programming을 통해서 간략하게나마 경험해 볼 수 있어서 좋았습니다.
이해도 자가 점검 리스트
버전 관리 시스템 - Git
- Git의 핵심 기능 세 가지를 설명할 수 있다.
- Git과 Github의 차이를 설명할 수 있다.
Git 설치
- Git을 설치하고 기본적인 환경설정을 할 수 있다.
Git Workflow
- Git의 영역을 설명할 수 있다.
- Work Space, Staging Area, Local Repository
- add, commit, push의 역할을 설명할 수 있다.
- git log로 커밋 내역을 확인할 수 있다.
- git status로 파일 및 디렉토리들의 상태를 확인할 수 있다.
- git init과 git clone의 차이를 설명할 수 있다.
- Git을 사용하여 다른 사람과 함께 협업할 수 있다.
- Git으로 협업하는 중에 충돌이 발생했을 때, 충돌을 해결할 수 있다.
버전 관리 시스템 (Version Control System) - Git
Git은 리눅스의 창시자인 리누스토르발즈가 만들었으며 굉장히 많은 개발자들이 협업과 버전관리 그리고 백업을 위해서 굉장히 많이 쓰고 있다. VCS(Version Control System)은 Git 말고도 여러 개가 있다. 그중에서도 깃과 채용공고 사이트에 보면 SVN(Subversion)도 많이 보인다.
깃과 같은 버전 관리 시스템을 왜 사용해야할까?
위의 그림은 라디오 코리아의 한 게시물에 있는 미대생 공감짤이다. 나도 디자인 전공생으로서 이 짤에 매우 극히 공감한다. 그리고 결국 최최최최최최최최종 까지 가다가 맨 처음 꺼가 선택되는 비운을 많이 겪었다. 어쨌든 개발자들이 하나의 애플리케이션을 만들 때 수많은 양의 코드를 작성한다. 그러한 코드의 버전을 하나하나 파일로 만든다면 굉장히 관리하기가 어렵고 어디서부터 어떤 오류가 떴는지 찾아내고 복구하기도 어려울 것이다.
깃은 이러한 버전관리를 굉장히 쉽게 할 수 있도록 도와주는 소프트웨어다.
깃은 commit(커밋)을 통해 변경사항의 지점을 만들어서 스냅숏을 찍어둔다. 그리고 어떤 것이 삭제되고 어떤 파일이 생기고 어떤 코드가 삽입되었는지 스냅샷을 통해 따로 깃 저장소에 저장해 두어서 만약에 내 수정 때문에 오류가 났다면 그전으로 바로 되돌아갈 수 있다.
깃에는 CLI 환경에서 작업하는 것도 있고 현업에서는 깃의 여러버전을 그래픽적으로 한눈에 보기 쉽게 하고 관리하기 위해 sourceTree 같은 GUI 프로그램도 쓴다. 이건 나중에 더 깃을 다룰 일이 있다면 다루도록 하겠다.
Git 기본명령어
- git status - 현재 저장소 repository(repo)에 대한 정보를 보여줌
- <주의사항 : 한 프로젝트 폴더 안에서 git init을 하고 그 아래의 폴더들은 자동 추적됨>
- git init - 폴더 안의 저장소를 초기화하고 새로운 repository를 만듦
- git add <파일명> - working directory → staging Area로 추가함 , 변경한 파일들을 묶어서 커밋할 수 있도록 그룹화를 시킬 수 있음 ex) git add test1.txt texs2.txt test3.txt
- git add . : 모든 변경사항이 있는 파일을 한 번에 그룹화할 수 있다
- git commit - 변경 사항을 커밋하고 기본적으로 VIM 에디터가 설정되어 있어서 VIM 에디터가 커밋 메시지를 작성하라고 열리는데 모르는 사람은 화면을 나가지도 못할 수도 있다. (VIM 어렵다)
- git commit -m "커밋 메세지" - 에디터가 실행되지 않고 바로 <커밋 메세지>의 내용으로 저장된다
- git commit -am "커밋 메세지" - working directory에 git이 추적하고 있는 파일을 staging Area로 추가하지 않고 바로 커밋한다.
- git config --global core.editor "code --wait” : vscode로 기본 텍스트 에디터로 설정을 변경할 때 (이후 git commit 을 하면 VScode로 열린다)
- git log - commit 의 기록을 보여준다
- git log —oneline - 커밋 기록을 한줄로 간단하게 볼 수 있다
- git commit —amend : 방금 전 커밋한 내용을 되돌려 수정할 수 있음 커밋메세지를 수정하거나 아니면 미처 추가하지 못한 파일을 추가 할 수 있음 추가하고 싶으 파일이 있다면 그전에 add를 해야함
- git reset HEAD^ - 방금 전 커밋을 삭제하고 그 전 커밋 상태로 돌아간다.
- git branch <브랜치 이름> - 새로운 브랜치를 생성한다 생성한 브랜치로 이동하지 않음 (나중에 자세히 설명)
- git switch <브랜치 이름> - 해당 브랜치로 이동한다
이 외에도 다양한 명령어가 있는데 이것은 공식사이트에 가면 더 자세한 옵션들과 설명이 나와 있다.
깃 공식사이트 문서 : https://git-scm.com/docs
Git 협업 Workflow
프로젝트 파일을 fork -> git clone 을 통해 로컬에 저장 -> 수정 -> 변경사항 커밋 -> git push를 통해 깃허브의 원격 Repo에 저장 -> Pull Request를 통해 프로젝트에 병합 할지 결정
대충의 개념을 머리에 남기기 위해서 용어들로 축약해서 적었는데 다음에 그림을 그리고 사진도 추가해서 더욱 이해하기 쉽도록 만들어야겠다. 오늘은 시간이 많지 않은 관계로 여기까지 정리합니다.
<내가 들었던 유데미 강의 링크>
오늘의 한줄평
깃과 깃허브를 어떻게든 써봤던 것이 잘했다는 생각이 들고 오늘 경험한 거는 정말 사실 부담이나 책임 없이 커밋하고 머지하고 깃허브에 푸시하고 하는 일이었는데 현업에서 정말 마스터(혹은 메인) 브랜치에 머지할 때 굉장히 많이 떨릴 것 같다. 여러가지 충돌문제도 있을 수 있고... 프로젝트를 진행 할 때 이러한 문제들을 많이 만나봐서 열심히 해결해봐야겠다.
'개발일지' 카테고리의 다른 글
[TIL] Java 기초 - If 조건문, 에러 해결 (0) | 2023.02.21 |
---|---|
[TIL] Java 변수, 데이터 타입, 문자열 (0) | 2023.02.18 |
[TIL] 리눅스 CLI 기본 명령어 (feat. Ubuntu, WSL) (0) | 2023.02.16 |
[TIL] 컴퓨터 및 프로그래밍의 기초 이해, 웹 (0) | 2023.02.15 |
국비지원 백엔드 44기 코드스테이츠 합격후기 및 OT 회고 (0) | 2023.02.14 |