저장과 동기화

빈 저장소를 받아, 고친 파일을 커밋하고, GitHub와 맞춥니다.

Git 설치

Windows는 Git for Windows (새 창)를 설치합니다. 설치 옵션은 기본값으로 둡니다. macOS는 Xcode 명령줄 도구나 Homebrew의 git을 씁니다.

터미널을 새로 연 뒤 버전을 확인합니다. 숫자가 나오면 된 것입니다.

git --version

이름과 메일

커밋에는 만든 사람의 이름과 메일이 붙습니다. 컴퓨터마다 한 번만 설정합니다. 메일은 GitHub 계정의 메일과 같게 둡니다. 메일을 공개하고 싶지 않으면 GitHub 설정의 noreply 주소를 씁니다.

git config --global user.name "홍길동"
git config --global user.email "you@example.com"
git config --global --list

--global은 이 사용자 계정의 모든 저장소에 적용합니다. 저장소마다 다르게 쓰려면 그 폴더 안에서 --global 없이 실행합니다.

GitHub에 저장소 만들기

  1. GitHub에 로그인합니다.
  2. 오른쪽 위 +에서 New repository를 고릅니다.
  3. 저장소 이름을 적습니다. 예: learning-hub. 공개(Public)로 시작하면 링크만으로 읽을 수 있습니다.
  4. Add a README file을 켜 둡니다. 빈 저장소보다 clone이 단순합니다.
  5. Create repository를 누릅니다.

초록 버튼 Code에서 HTTPS 주소를 복사합니다. 형태는 https://github.com/사용자/learning-hub.git입니다.

받아 오기

프로젝트를 둘 폴더의 부모로 이동한 뒤 clone합니다. learning-hub 폴더가 생깁니다.

git clone https://github.com/사용자/learning-hub.git
cd learning-hub
git status

git status가 On branch main과 “nothing to commit, working tree clean”을 보여 주면 원격과 같습니다.

고치고, 고르고, 커밋

README.md에 한 줄을 추가하고 저장합니다. 그다음 차이를 보고, 그 파일만 스테이징하고, 커밋합니다.

git status
git diff
git add README.md
git commit -m "README에 프로젝트 한 줄 추가"
git status

git add .는 현재 폴더의 변경을 모두 스테이징합니다. node_modules나 .env가 섞여 있으면 그대로 커밋됩니다. 처음에는 파일 이름을 지정하는 편이 안전합니다. 무시할 파일은 파일과 실수의 .gitignore로 빼 둡니다.

커밋 메시지는 무엇을 바꿨는지 한 문장으로 적습니다. -m을 빼면 편집기가 열립니다. 저장하고 닫으면 커밋이 끝납니다.

올리기

git push

처음 push하면 브라우저로 GitHub 로그인이 뜹니다. Windows의 Git Credential Manager가 그 창을 엽니다. GitHub 계정 비밀번호를 터미널에 붙여 넣는 방식은 막혀 있습니다. 로그인 창이 없으면 GitHub 문서의 Git 인증을 따릅니다. 개인 액세스 토큰을 만든다면 저장소 권한만 주고, 채팅이나 코드에 붙여 넣지 않습니다.

끝난 뒤 GitHub 저장소 페이지를 새로고침하면 README 수정이 보입니다.

받아 합치기

다른 컴퓨터에서 push했거나, GitHub 웹에서 파일을 고쳤으면 작업 전에 받습니다.

git pull

내가 커밋한 내용과 원격 커밋이 같은 줄을 다르게 고쳤으면 pull이 멈추고 충돌을 알립니다. 표시를 읽는 방법은 브랜치·PR에 있습니다.

자주 보는 출력

출력 의미
Changes not staged for commit 저장은 됐지만 git add 전입니다.
Changes to be committed 다음 커밋에 포함됩니다.
Your branch is ahead of 'origin/main' 로컬 커밋이 아직 push되지 않았습니다.
nothing to commit, working tree clean 저장된 변경이 없습니다.