Git & GitHub 필수 개념 치트시트 (노션 정리용)
Git은 "버전 관리 시스템"입니다. 어렵게 들리지만, "시간 여행이 가능한 코드 저장소"라고 생각하면 쉽습니다. 이 문서는 Git의 핵심 개념과 자주 사용하는 명령어들을, 나중에 노션(Notion)에 옮겨 정리하기 좋도록 예시와 함께 설명합니다.
1. 최초 설정 (컴퓨터에 딱 한 번만!)
Git을 설치한 후, 누가 코드를 변경했는지 기록하기 위해 사용자 정보를 설정해야 합니다.
- 무엇을: 당신의 이름과 이메일을 Git에 등록합니다.
- 언제: Git을 설치하고 처음 사용할 때.
- 명령어:
# "Your Name"과 "you@example.com"을 실제 정보로 바꾸세요
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
2. Git 저장소 시작하기
A. 새로운 프로젝트를 Git으로 관리 시작 (init)
- 무엇을: 내 프로젝트 폴더를 Git이 관리하는 공간으로 만듭니다. (.git 폴더 생성)
- 언제: 완전히 새로운 프로젝트를 시작하거나, 기존 프로젝트에 처음으로 Git을 도입할 때.
- 명령어:
# 해당 프로젝트 폴더로 이동한 뒤 실행
git init
B. 불필요한 파일 무시하기 (.gitignore)
- 무엇을:
node_modules처럼 용량이 크거나, 자동으로 생성되거나, 민감한 정보가 담긴 파일들을 Git이 아예 무시하도록 설정합니다. - 언제:
git init직후, 첫 커밋을 하기 전. - 사용법: 프로젝트 최상위 경로에
.gitignore라는 이름의 파일을 만들고, 무시할 파일이나 폴더 이름을 한 줄에 하나씩 적습니다.
# 의존성 파일 (npm install로 자동 생성 가능)
/node_modules
# 빌드 결과물
/build /dist
# 운영체제 자동 생성 파일
.DS_Store
3. Git의 기본 작업 사이클 (수정 -> 추가 -> 저장)
코드를 변경하고 저장하는 것은 항상 이 3단계를 따릅니다.
(이미지 출처: git-scm.com)
- Working Directory (작업 공간): 내가 실제 코드를 수정하는 내 컴퓨터의 폴더.
- Staging Area (스테이지): 커밋(저장)할 변경사항들을 잠시 대기시키는 준비 공간.
- Repository (저장소): 스테이지에 있던 변경사항들이 버전별로 영구히 저장되는 곳.
① 변경사항 확인 (status)
- 무엇을: 현재 작업 폴더에서 어떤 파일이 변경되었는지, 스테이지에 무엇이 있는지 확인합니다.
- 언제: 작업을 시작하기 전,
add하기 전,commit하기 전에 수시로 확인하는 습관을 들이면 좋습니다. - 명령어:
git status
② 스테이지에 추가 (add)
- 무엇을: 작업 공간에서 변경된 파일들을 스테이지(준비 공간)로 옮깁니다. "이 변경사항들을 곧 저장할 거야!"라고 표시하는 것과 같습니다.
- 언제: 커밋하기 직전.
- 명령어:
# 변경된 모든 파일을 스테이지에 추가 (가장 흔하게 사용)
git add .
# 특정 파일만 추가
git add index.html git add style.css
③ 저장소에 저장 (commit)
- 무엇을: 스테이지에 올라온 변경사항들을 하나의 의미있는 버전(스냅샷)으로 만들어 저장소에 영구히 기록합니다.
- 언제: 하나의 작업 단위(예: '로그인 기능 구현 완료')가 끝났을 때.
- 명령어:
# -m 뒤에 "메시지"로 어떤 변경사항인지 명확히 적어야 합니다.
git commit -m "Feat: 로그인 기능 추가"
git commit -m "Fix: 메인페이지 CSS 버그 수정"
4. 원격 저장소 연동 (GitHub)
로컬 저장소(내 컴퓨터)의 코드를 GitHub 같은 원격 서버에 백업하고 공유하는 과정입니다.
① 원격 저장소 연결 (remote)
- 무엇을: 내 로컬 저장소에 코드를 올릴 GitHub 저장소의 주소를 등록합니다. (보통 'origin'이라는 별명 사용)
- 언제:
git init후, GitHub에 새 저장소를 만든 직후. - 명령어:
# <GitHub_저장소_URL> 부분에 실제 주소를 붙여넣으세요.
git remote add origin <GitHub_저장소_URL>
② 원격 저장소에 올리기 (push)
- 무엇을: 내 컴퓨터(로컬 저장소)에 커밋한 변경사항들을 GitHub(원격 저장소)로 업로드합니다.
- 언제: 로컬에 중요한 커밋을 완료하고, 이를 백업하거나 다른 사람과 공유하고 싶을 때.
- 명령어:
# 'origin'이라는 원격 저장소의 'main' 브랜치로 코드를 올린다.
# -u 옵션은 한번만 사용하면 다음부터는 'git push'만 입력해도 됩니다.
git branch -M main
git push -u origin main
5. 과거로 시간 여행하기
① 변경 이력 보기 (log)
- 무엇을: 지금까지 내가 커밋한 모든 기록을 최신순으로 확인합니다.
- 언제: 과거 작업 내역을 보거나, 특정 시점으로 돌아가고 싶을 때.
- 명령어:
q 키를 누르면 로그 화면에서 나올 수 있습니다.
# 모든 정보를 자세히 보기 git log
# 한 줄에 하나씩 간략하게 보기 (강력 추천!)
git log --oneline
② 과거 버전 구경하기 (checkout)
- 무엇을: 특정 커밋 시점의 코드를 잠깐 확인만 해봅니다. 내 프로젝트 파일들이 그 시점으로 잠시 바뀝니다.
- 언제: "예전에 이 코드 어떻게 짰더라?" 하고 참고만 하고 싶을 때.
- 사용법:
git log --oneline으로 돌아가고 싶은 커밋의 해시(예:a1b2c3d)를 복사합니다.git checkout a1b2c3d명령어를 실행합니다.- 구경이 끝나면 반드시
git checkout main명령어로 현재 작업으로 돌아옵니다.
③ 과거 버전으로 완전히 되돌아가기 (reset)
- 무엇을: 특정 커밋 시점으로 완전히 돌아가고, 그 이후의 모든 커밋 기록을 삭제합니다.
- 언제: "아, 이 이후 작업은 다 잘못됐어. 이 시점부터 다시 시작할래." 라고 결심했을 때.
- 경고: 매우 위험한 명령어입니다! 되돌릴 수 없으므로 정말 필요할 때만 사용하세요.
- 사용법:
git log --oneline으로 돌아갈 기준점 커밋의 해시를 복사합니다.git reset --hard a1b2c3d명령어를 실행합니다.
6. 가지치기 작업 (Branch) - Git의 꽃
"현재 코드는 그대로 두고, 새로운 기능을 실험해보거나 버그를 수정하는 독립적인 작업 공간을 만드는 것"
시나리오: "로그인 기능은 완성됐는데, 소셜 로그인 기능을 추가해볼까? 근데 잘 안될 수도 있으니 원래 코드는 건드리고 싶지 않아."
① 브랜치 목록 확인 및 생성/이동
- 무엇을: 새로운 작업 가지를 만들고, 그 가지로 작업 공간을 전환합니다.
- 언제: 새로운 기능 개발, 버그 수정, 실험 등 기존 코드에 영향을 주고 싶지 않은 작업을 시작할 때.
- 명령어:
# 현재 어떤 브랜치들이 있는지 목록 보기 (*가 현재 위치)
git branch
'social-login'이라는 새 브랜치를 만들고, 그곳으로 바로 이동하기
git checkout -b social-login
# 기존에 만들어둔 브랜치로 이동하기
git checkout main git checkout social-login
② 브랜치 사용 예시 (사용자님이 질문한 시나리오)
1-2-3-4-5 단계까지 작업이 진행된 main 브랜치가 있습니다.
3단계 시점에서 다른 아이디어를 시도해보고 싶습니다.
- 3단계 커밋 해시 확인:
git log --oneline으로 3단계 커밋의 해시(예:a1b2c3)를 찾습니다. - 3단계 기반으로 새 브랜치 생성:
git checkout -b new-idea a1b2c3- 새로운 브랜치(
new-idea)에서 작업: 이제 이 브랜치에서add,commit을 하며3(2),4(2)단계를 자유롭게 진행합니다. 이 작업은main브랜치에 전혀 영향을 주지 않습니다. - 원래 작업으로 복귀: 언제든지
git checkout main을 입력하면, 프로젝트는 다시 5단계까지 완료된 상태로 돌아옵니다. - 두 작업물을 오가기:
git checkout new-idea와git checkout main을 통해 두 개의 평행 세계를 자유롭게 오갈 수 있습니다.
7. 다른 컴퓨터에서 작업 이어가기 (Clone)
GitHub에 올려둔 프로젝트를 다른 컴퓨터에서도 이어서 작업하고 싶을 때 사용합니다.
- 무엇을: 원격 저장소(GitHub)의 프로젝트를 내 컴퓨터로 완전히 똑같이 복제해옵니다.
- 언제: 새로운 컴퓨터에서 작업을 시작하거나, 다른 사람의 공개 프로젝트를 내 컴퓨터로 가져오고 싶을 때.
- 사용법:
- GitHub에서 저장소 주소 복사: 복제하고 싶은 GitHub 저장소 페이지로 가서
< > Code버튼을 누르고 HTTPS URL을 복사합니다. - 터미널에서 명령어 실행:
# 프로젝트를 저장하고 싶은 폴더로 이동한 뒤, 아래 명령어를 실행합니다.# <GitHub_저장소_URL> 부분에 복사한 주소를 붙여넣으세요.git clone <GitHub_저장소_URL>- 의존성 파일 설치:
clone이 완료되면, 복제된 프로젝트 폴더로 이동해서 필요한 라이브러리들을 설치해줘야 합니다. # 방금 clone으로 생성된 프로젝트 폴더로 이동cd <빌드디렉토리이름># package.json을 기반으로 모든 라이브러리 자동 설치npm install
- GitHub에서 저장소 주소 복사: 복제하고 싶은 GitHub 저장소 페이지로 가서
이제 이 컴퓨터에서도 원래 컴퓨터와 완벽하게 동일한 환경에서 add, commit, push 등의 작업을 이어갈 수 있습니다.