wecode 1주차 precourse 공통 세션으로 다시 만나게 된 깃과 깃허브.
사실 지난 학기 학교에서 수강한 <오픈소스SW와 파이썬 프로그래밍>이라는 강의에서 접한 적이 있어서 아예 새로운 내용은 아니었지만 완전한 이해를 하지 못해서 늘 git에 대해서는 아쉬움이 컸다.
내 이해력에 비해 성적에 대해서는 꽤 관대하셨던 교수님이셨다.;ㅅ;.
이번 글에서는 git과 github에 대한 간단한 이론을 알아보고
마지막에 이러한 지식들을 활용하여 github에 개인 프로젝트 폴더를 직접 만들어보겠다.
리눅스의 개발자인 '리누스 토발즈'가 개발한 프로그램으로 깃을 통해 개발자들은 개발 단계별로 깃발을 꽂을 수 있다.
git의 공식 명칭은 분산 버전 관리 시스템(VCS)으로
프로젝트 파일의 변경 사항을 추적하는 시스템이다.
이를 통해 개발자들은 변경 사항을 기록하고, 특정 시점의 버전을 저장하여 언제든 돌아갈 수 있다. (ex 한 서비스 내에서 특정 기능에 에러나 버그가 생겨 이전 버전으로 롤백하게 되는 상황)
또한 git을 사용하여 여러 사람들과의 협업을 효율적으로 관리할 수 있고, 각 개발자들이 한 프로젝트에서 각기 다른 개별 프로젝트를 작업한 뒤 하나의 프로젝트로 다시 병합할 수 있다.
그러므로 git은 개인 혹은 팀 간의 프로젝트를 관리하는데에 용이하며 이러한 이유들로 현업과 실무에서 요하는 가장 중요한 기술이다.
💡Git 다운로드 링크: https://git-scm.com/downloads
git을 이용하기 위해서는 위의 사이트에서 git을 다운로드를 할 수 있다.
git이 커피라면 github은 커피를 제공하기 위한 각종 서비스를 구축하는 스타벅스 정도로 생각하면 된다.
따라서 github는 git의 관리를 쉽게 해주는 웹 서비스이다.
다시 말해, git을 이용하여 버전관리를 한 프로젝트들을 관리해주는 웹 서비스이다.
대표적인 기능으로는 github repository(파일이나 폴더를 저장하는 공간)를 이용하여 프로그램의 소스코드를 저장 및 공유를 용이하게 하고 팀 프로젝트를 진행할때 협업을 도와주기도 한다.
git 자체의 기능뿐만아니라 이에 필요한 부가적인 기능 (보안기능, 개인 블로그, 웹호스팅, sns 기능 등) 을 제공한다. 이와 비슷한 서비스로 bitbucket, gitlab 등이 존재한다.
💡 https://docs.github.com/en/get-started/quickstart/hello-world
위는 깃허브 사이트에 기재된 github introduction이다.
깃허브의 각종 기능에 관한 내용이 잘 정리되어 있어 참고해봐도 좋다.
깃 저장소를 초기화하고 생성한다. git init을 통해 로컬 저장소를 만들면 그때부터 이 폴더에서 버전 관리를 할 수 있다.
로컬 파일의 상태를 체크한다. 저장소 안에 어떤 파일이 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 확인할 수 있다.
커밋에 추가할 파일을 선택하는 명령어로, 장바구니와 같은 역할을 한다.
파일 수정 이력을 기록하는 기능. 저장소에 수정한 이력을 깃발로 꽂아놓기 위해 사용하는 명령어이다. git commit -m 이라는 명령어를 통해 한줄로 커밋 메모를 남길 수 있다.
커밋에는 항상 메모가 따라다니며 커밋에 따라다니는 메모를 커밋 로그라고 한다. git log를 통해 커밋 내역을 확인할 수 있다.
원격지에 경로를 연결한다.
원격지가 없을 때 깃을 복사하는 기능으로 원격 저장소의 코드를 복제하고 기존 레파지토리를 내 로컬에서 사용할 수 있게 가져오는 명령어이다.
로컬에서 작업한 내용을 클라우드로 보내는 기능으로 커밋을 깃허브 온라인에서 확인할 수 있다.
협업 과정에서 주로 사용하는 기능. 나만의 독립된 작업 공간을 만들어서 자신만의 변경사항과 파일 추가 등의 커밋 타임라인을 만들 수 있다.
현재 있는 브랜치에서 다른 브랜치로 이동할 때 사용하는 명령어
내가 원하는 지점으로 파일을 되돌리며 자유자재로 이동이 가능하게 하는 기능. 체크아웃을 통해 커밋으로 꽂아 놓은 부분의 깃발로 옮겨 다닐 수 있다.
클라우드(깃허브)에 있는 최신 버전을 로컬로 가져와서 작업할 수 있다.
각각의 브랜치, 혹은 브랜치와 마스터를 이어주는 역할을 한다. 로컬에서 현재 브랜치의 코드와 특정 브랜치의 코드를 합칠 때 사용한다.
** 터미널에서 git help 명령어 실행을 통해 21개의 가장 많이 사용하는 깃 명령어를 열람해볼 수 있다.
몇가지 깃과 깃허브의 기능과 이론에 대해서 알아보았다.
다음은 이를 활용하여 1주차 과제 기록을 나만의 레파지토리를 만들어보았다.
해당 실습은 vscode, 깃과 깃허브에 대한 기본 세팅과 설치가 되어있다는 가정 하에 진행하였다.
가장 먼저 깃허브에 로그인을 하여 우측 상단에 + 버튼을 눌러 New repository를 클릭한다.
이동된 페이지에 Repository name 이 지정되지 않았을 것이다. 레파지토리 목적에 맞는 적절한 이름을 써주고 공개용이면 public, 혼자만 보고 싶다면 private로 지정하면 된다.
이 설정은 나중에 setting에서 바꿀 수 있으니 너무 신중하지 않아도 괜찮다.
프로젝트 성격에 맞는 license 설정 후 create repository 클릭. 이후 자신의 레파지토리 성격에 맞는 라이선스를 선택하면 된다.
💡 https://choosealicense.com/ 각 오픈소스 라이선스의 특징에 대해 정리한 사이트를 참고해도 좋다.
(필자는 해당 폴더에서 react를 주로 공부할 예정이므로 MIT License를 선택하였다.)
그럼 이제 짝짝짝👏 첫번째 스텝인 레파지토리가 만들어졌다.
이제 터미널을 켜서 (필자는 iterm2로 진행을 해보겠다. 방법은 동일.) 첫번째 줄에
git config --global user.name "mikio"(자신의 이름)
을 작성한 후 enter 키를 누르고 다음 줄에
git config --global user.name email "mikio999@gmail.com"(깃허브 가입 시 사용한 이메일)
를 작성한 후 enter 키를 누른다.
git config --list
를 통해 잘 설정이 되었는지 확인할 수 있다.
이제 VScode로 이동하여 레파지토리에 올리고 싶은 파일을 연 후 cmd + j 로 내장된 터미널을 실행시켜준다.
(2)-1. git init
git init
git을 쓸 준비를 하는 작업. 맨 처음에 프로젝트를 사용할 때는 반드시 이 명령어를 사용해야 한다.
(2)-2. git add .
git add .
여기서 '.'의 의미는 전부라는 의미이다. 따라서 이 프로젝트에 있는 모든 파일을 깃에 올릴 준비를 하겠다는 의미이다.
git add (파일명)
을 통해 특정 파일만 올릴 수도 있다.
(2)-3. git status
git status
파일의 상태를 확인해본다.
(2)-4. git commit -m ""
git commit -m ""
git commit을 통해 깃발을 꽂는다. 파일의 히스토리를 만드는 과정이다.
(2)-5. git remote add origin
다시 깃허브의 레파지토리로 돌아와서 code<>라고 쓰여진 버튼을 클릭한 후 https의 주소를 복사해온다.
다시 vscode의 terminal에서 git remote add origin https://github.com/mikio999/wecode-portfolio.git(주소 복사본)
을 실행시킨다. 이는 github와 로컬 프로젝트를 연결하는 작업이다.
git remote -v
를 통해 프로젝트와 깃허브 주소가 잘 연결되었는지 확인할 수 있다.
2-(6) git push origin master
이제 git push origin master
로 마스터 브랜치로 보내고 다시 깃허브를 리프레쉬하면..
코드가 자동으로 레파지토리의 master 브랜치에 올라가 있는 것을 볼 수 있다.
깃허브의 기본적인 커밋은 여기서 끝이다.
위대한 첫 시작을 축하합니다 :D 👏 👏 👏
추가하는 작업에서는 git init은 필요없다.
수정하는 파일의 터미널을 실행한 후 git add .
으로 시작한다.
파일의 상태를 확인해보고 싶으면 추가로 git status
로 확인해볼 수 있다.
git commit -m을 통해 수정한 사항을 기입하고
git commit -m "second commit: 오타 수정"
git push origin master로 다시 깃허브의 레파지토리로 보낸다.
git push origin master
⛔️ 위 실습은 오직 개인 포트폴리오용 커밋의 예시이므로 협업이나 팀 프로젝트에서 함부로 master 브랜치에 커밋했다가는 브랜치 충돌과 같은 사고(??)가 일어날 수도 있다.
우선 개인 프로젝트 커밋을 통해 깃허브와 친해지며 이후에 있을 협업의 상황에서 깃과 깃허브를 능숙하게 사용할 수 있도록 손에 익혀놔야겠다.