
원하는 시점의 버전으로 자유롭게 이동하고 수정할 수 있는 소스코드 버전 관리 시스템이다. 로컬에서 혼자 사용할 수도 있고, 서버에 올리면 팀원들과 병렬로 사용할 수도 있다. 특히 여러 명이 함께 소스 코드를 수정할 경우에 파일의 변경 이력을 추적하는 것이 어렵기 때문에 버전 관리가 필수적이다. 버전 관리 과정에서 개발 단계나 기능을 분리하여 관리할 수 있는데, 이 단위를 브랜치라고 한다.
핵심 키워드: 버전 관리 시스템(Version Control System, VCS)
프로젝트의 소스 코드를 저장하고 관리할 수 있는 Git 호스팅 사이트 중 하나이다. 누구든지 기여할 수 있는 공개 저장소 프로젝트, 즉 오픈소스의 특징을 보인다.
대표적인 GitHub 명령어
- 초기 설정
$ git config --global user.email "GitHub이메일" $ git config --global user.name "GitHub이름" # 사용자(나)의 GitHub 이메일, 이름 전역 설정$ git config --get user.email $ git config --get user.name # 정보가 올바르게 설정되었는지 확인$ git config --global init.defaultBranch main # 기본 브랜치 명을 main으로 설정$ git config --get init.defaultBranch # 기본 브랜치 명 설정값 확인$ git init # 로컬 저장소(빈 Git 저장소 초기화, .git 폴더 생성)- 코드 수정
$ git log # 변경 이력 확인$ git diff 커밋아이디 # 이전 커밋과의 차이 확인$ git checkout 커밋아이디 # 해당 커밋으로 코드 되돌림$ git checkout - # 최신 커밋으로 코드 되돌림- 원격 저장소
$ git remote add origin 원격 저장소 주소 # 로컬 저장소에 원격 저장소 주소 설정$ git push origin main # 로컬 저장소의 commit을 원격 저장소로 내보냄$ git clone 원격 저장소 주소 # 원격 저장소를 통째로 로컬의 특정 경로에 복제$ git pull origin main # 원격 저장소의 새로운 commit을 로컬 저장소로 받아옴
Git 저장소를 시각적으로 관리할 수 있는 GUI 도구이다. 명령어 없이도 브랜치 관리, 커밋, 머지 등을 직관적으로 수행할 수 있다.

현재 위치한 경로에서 파일의 변경이 이루어지게 되면,


위 사진들처럼 그래프 상단에 커밋하지 않은 변경사항이 생기고, 스테이지에 올라가지 않은 파일 목록에 변경 파일이 추가된다. 해당 파일을 커밋하기 위해서는 우측의 + 버튼을 누르면 된다.
Q. Commit Id가 뭐지?
A. 밑은 Git Bash에서 commit 이력을 반환한 화면이다. 해당 화면에서 각 commit의 맨윗 줄 단호박색의 복잡한 코드가 Commid Id이다. checkout 명령어를 통해서 해당 커밋 시점으로 되돌리고 싶을 때 Commit Id를 사용하는데, 이때 Commit Id는 앞에서부터 7자리만 작성해도 유효하다.
(ex. 39f9dab6d76dd887a27f63c14533af51f3d4030) 
Q. CLI vs GUI
A. CLI는 Git Bash와 같이 명령어를 입력하는 방식으로 사용되며, GUI는 Souretree와 같이 클릭 등 그래픽을 통해서 사용하는 환경을 나타낸다.
Q. markup vs markdown
A. HTML이 markup의 대표적인 언어이다. <'h1><'/h1>과 같은 문법을 사용한다. 반면, markdown은 이를 좀 더 간편하게 표기한 #, ## 등을 사용한다.
와.... 필력... 무엇...? !!