이번에 배운 내용은 기존 3주차
에서 배웠어야 할 github
파트이다.
지금 뉴스!
프로젝트는 혼자서 만들고 있어 github
를 매번 사용하진 않고 있지만,
여러사람들과 협업
할때에는 github
가 필수적인 요소이다.
스파르타코딩클럽
을 수강하기 전 프로젝트
를 진행하면 수업을 같이 듣는 메이트들과 함께 협업
하는 줄 알았다.
그래서 팀에게 폐를 끼치기 싫어 강남역 근처 영풍문고에 들러 github
관련 서적을 구매했는데, 개인별 프로젝트였기때문에 아직github
를 사용하지 않아 아직 다 읽지 못했다.
프로젝트가 끝나면 나머지 부분은 읽어봐야겠다.
그렇다면 git
이란 무엇이고 개발업에서는 github
를 왜 중요하게 생각할까?
코드관리에 난항을 겪고있는 개발자분들은 다음과 같은 이유로git
을 대부분 사용한다.
1. 어떤 버전부터 `코드`가 충돌이 일어났는지 확인하고 싶을 때, 어떤 내용이 변경됐는지 확인하고 싶을 때
2. 여러 사람 / 여러 컴퓨터에서 코드작업을 동시에 하면서 변경된 내용을 한 눈에 확인하고 싶을 때
사실 git
을 통해 혼자서도 commit / push / pull
과정을 확인 할 수 있다.
다만, 개발은 혼자가 아닌 여러명
과 진행하기 때문에 github
사이트를 통해 작업 기록과 파일을 저장하는 git
원격 저장소를 이용한다. (그 외에도 유사한 기능인 Gitlab
, bitbucket
들도 있다.)
github
를 사용하면 다음과 같은 과정을 거친다
`1. commit`
내 로컬 저장소에 `작업 내역을 반영하는 과정`이다, 쉽게 말해 `변경한 내용을 저장`하는 과정이다.
`2. push`
보통 여러 사용자가 올린 것이라도 작업 내역에 겹치는 게 없다면 자동으로 합쳐준다.
이때, 2명이상의 사용자가 동일한 내용을 고쳤다면, `github`에서 `충돌(conflict)`났다고 사용자에게 알려주고 사용자가 직접 수정하라고 알려주며 돌려보낸다.
`3. pull`
다른 사람의 작업 내역을 가져오거나, 다른 컴퓨터에서 작업한 내용을 가져온다.
보통 나의 작업 내역을 `commit`하고 `pull`해오면 좋다. 그렇지 않으면 다른 사람의 작업 내역에 내 작업내역이 덮어씌워진다.
임시로 저장하는 `stash`기능도 있다.
위 내용을 요약하면 다음과 같다.
팀원들과 github
를 사용하면서 서비스를 만든다고 가정해보자.
팀원 A, B 둘 중 먼저 push
한 A를 우선순위
로 설정하고, 나중에 push
한 B의 코드 중 A의 코드와 conflict
한 코드가 있으면 A의 코드를 B가 pull
하여 conflict
났던 부분을 수정하고 push
하는 과정이라 생각하면 된다.
이론상으로 듣다가 상황을 가정한 예시를 드니까 이해가 잘 되는것같다.
이제 남은 건 몸소 체험하는 것뿐 🧐
github
수정 내역을 Slack
에 알림을 오게 설정 할 수도 있는데
Slack
을 많이 사용하는 개발자들에게 안성맞춤인 기능이다.
코드는 다음과 같다.
/github subscribe 내_github_사용자명/reposiory명
이후 github
에게 권한을 주면 된다.
이 외에도 slack
메시지 창에 /github
를 쓰고 enter
치면 github slack app
의 명령어들을 볼 수 있는데 이를 mongoDB
에 저장하면 언제든지 가져다 쓸 수 있다.
그럼, 실제 나의 github
에 [지금 뉴스!]
를 commit
하기 전 setting
을 해보자.
나는 server
에 venv
를 구현했는데 그럼 server
에도 venv
코드를 올려야 할까?
결론은 아니다 .gitignore
에 이처럼 무거운 파일들을 commit
하지 않고도 구현가능하게 설정했다.
자세한 목록은 Github ignore에서 볼 수 있다.
또, 내가 설치하고 싶은python setting
은 requirements.text
에
venv==0.0.0
requests==0.0.0
pymongo==0.0.0
beautifulsoup4==0.0.0
이렇게 작성하고
pip install -r requirements.text
코드를 통해 한번에 다운받을 수 있다.
(🤩 정말 간편하다!)
오늘은 github
의 사용법에 대해 간략하게 배웠다.
사실 나 같은 초보개발자들은 여러가지 기능을 많이 다뤄보고 싶은데 혼자서 하기는 벅찬감이 없지 않아 있다.
스파르타코딩클럽
에서도 협업
과정이 추가 됐으면 하는 개인적인 바램이...!
얼른 프로젝트
만들러 가야겠다.. 😂 😂