git과 github를 사용한지는 벌써 몇 년이 되었지만, 이 두 개를 구분 지어서 생각하지 않고 사용해왔던 것 같다. 항상 git과 github는 같이 사용하는 도구라고 생각했는데, 오늘 수업을 통해 더 명확하게 구분할 수 있게 되었다. 아래는 git과 github에 관해 몰랐거나, 헷갈렸던 부분을 정리한 내용이다.
git은 로컬에서 작동하는 분산 버전 관리 시스템이다. 따라서 git 단독으로는 다른 사람들과 협업하거나, 공유하기는 어렵다. git을 통해 프로젝트의 버전을 관리할 수 있다.
쉽게 말해, 커밋 시점의 내용들을 모두 저장한다는 의미라고 해석했다. 개발자가 프로젝트를 하면서 수많은 커밋을 진행할텐데, 이 모든 커밋이 저장되어, 원하는 커밋 시점의 파일들을 가져올 수 있다.
github는 git 저장소를 클라우드에서 호스팅하는 플랫폼이다. 로컬에서 저장된 git 저장소를 클라우드 상의 원격 저장소로 보내거나, 원격저장소에 있는 내용을 로컬 저장소로 가져올 수 있는 기능을 제공한다. 이를 통해 다른 사람들과 코드를 공유하고 협업할 수 있다. Pull Request에서부터, Issue, Project 등의 다양한 협업 도구를 지원한다.

위의 다이어그램을 보면서 현재 작업 공간이 원격 저장소로 어떻게 저장되는지 조금 더 자세하게 설명하겠다.
git init을 통해 생성함 → .git 파일이 생성됨git add <파일명 or 디렉토리>를 통해 작업한 내용을 스테이징 영역으로 올림git commit을 통해 스테이징된 영역에 속한 파일들을 로컬 저장소에 저장git push를 통해 로컬 저장소의 최신 커밋을 원격 저장소에 저장함원격 저장소에 있는 파일들을 현재 작업 공간으로 옮겨오는 단계는 다음과 같다.
git fetch 를 통해 원격 저장소에 있는 커밋을 로컬 저장소로 옮겨옴git merge를 통해 로컬 저장소로 옮겨온 커밋의 파일들을 현재 작업 공간에 적용함이렇게 두 단계로 진행하지만, 보통의 경우에는 git pull을 통해 두 단계를 동시에 실행함
찾아본 결과 스테이징 영역을 사용하는 주요한 이유는 다음과 같다고 판단했다.
# 최초 git 사용자 정보 입력
git config --global user.name "seyun0714"
git config --global user.email "seun0714@naver.com"
# 현재 환경변수 리스트 출력
git config --list
# 기본 브랜치 이름 설정
git config --global init.defaultbranch main
# 현재 저장소의 브랜치 이름 변경
git branch -M main
# 원격 저장소 -> 로컬 저장소
git fetch
# 로컬 저장소 -> 워킹 디렉토리
git merge
# fetch + merge
git pull