IT 기초: Git과 개발 협업
3주 과정, 하루 1시간

IT 기초: Git과 개발 협업

파일 이름에 final_v3를 붙이던 습관에서 벗어나, Git으로 기록을 남기고 되돌리고, GitHub에서 함께 일하고, 푸시 한 번에 테스트가 도는 CI/CD까지 직접 해 봅니다. 위에서부터 하나씩 체크하세요.

다음 할 일

…

실습 방법 보기
전체 진행0 / 0
진행 상황: 이 브라우저에 저장

공부하는 방법

매일 1시간몰아서 8시간보다 매일 1시간이 오래 남습니다. 과제마다 예상 시간이 적혀 있습니다.
읽기 20%, 손 80%개념을 읽었으면 바로 WSL 터미널에서 git status 와 git log 로 눈으로 확인합니다.
일부러 부수기설정을 틀리게 바꾸고, 에러 메시지만 보고 원인을 찾습니다.
소리 내 설명하기단계 끝의 자가 점검에 답을 보지 않고 말해 봅니다. 막히면 그 과제로 돌아갑니다.
맥북에서 실습하기Windows에서 한다면 건너뛰세요

맥에서는 Ubuntu 가상 머신(VM)을 하나 띄워 그 안에서 실습합니다. 그러면 이 사이트의 명령을 Windows(WSL)와 똑같이 쓸 수 있습니다. 사이트에 "WSL Ubuntu 터미널"이라고 나오면 "VM 터미널"로 읽으세요.

  1. Homebrew 설치 (맥용 설치 관리자)회사 맥이면 설치 전에 IT팀 승인을 확인하세요.
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Ubuntu 가상 머신 만들고 들어가기Multipass는 무료입니다. 이 VM이 Windows의 WSL 역할을 합니다.
    brew install --cask multipass                                  # 가상 머신 관리 도구 설치
    multipass launch --name ubuntu --cpus 2 --memory 4G --disk 20G  # Ubuntu VM 만들기 (쿠버네티스는 --memory 8G 권장)
    multipass shell ubuntu                                          # VM 터미널로 들어가기
    # 여기서부터 사이트의 "WSL Ubuntu 터미널" 명령을 그대로 실행
  3. 맥 브라우저에서 VM 안의 서비스 열기WSL과 달리 localhost가 자동으로 연결되지 않습니다.
    multipass info ubuntu | grep IPv4  # VM의 IP 확인 (예: 192.168.64.5)
    # 브라우저에서 localhost 대신 http://<VM IP>:<포트> 로 접속
    # kubectl port-forward 는 --address 0.0.0.0 을 붙여야 맥에서 열림
  4. 끝나면 정리VM은 켜 두면 맥의 메모리를 계속 씁니다.
    multipass stop ubuntu            # VM 끄기 (내용은 남음)
    multipass start ubuntu           # 다시 켜기
    multipass delete --purge ubuntu  # 완전히 삭제

Git과 Python은 VM 없이 맥에서 바로 해도 됩니다 (xcode-select --install, brew install python). 서버, 네트워크, DB처럼 리눅스 명령이 나오는 사이트는 VM에서 하세요.

WSL 설치, PowerShell 명령건너뜁니다. 위 2번 VM이 대신합니다.
Apple Silicon(M1 이후) 맥VM에서 uname -m이 aarch64면 다운로드 주소의 amd64를 arm64로 바꿉니다. arm64 버전이 없는 이미지는 exec format error가 날 수 있습니다.
Docker Desktop맥도 큰 회사는 유료입니다. VM 안의 Docker Engine을 쓰고, 맥에서 직접 쓰려면 무료인 Colima를 씁니다.
파일 주고받기multipass transfer 파일 ubuntu: 또는 multipass mount ~/study ubuntu:/home/ubuntu/study
브라우저로 열기localhost 대신 VM IP를 씁니다 (위 3번).

VM 없이 맥에서 바로 하고 싶다면 brew install kubectl kind helm colima docker 로 도구를 깔 수 있습니다. 단, 리눅스 내부(namespace, cgroup, systemd, iptables)를 들여다보는 실습은 VM에서만 됩니다.

처음 보는 용어

버전 관리 시스템(VCS)파일의 변경 기록을 쌓아 누가, 언제, 무엇을, 왜 바꿨는지 알려 주고 되돌릴 수 있게 하는 도구입니다. Git이 가장 널리 쓰입니다.
저장소(Repository)Git이 관리하는 폴더와 그 기록 전체입니다. 기록은 숨김 폴더 .git 안에 있습니다.
작업 디렉터리지금 눈에 보이고 편집하는 실제 파일들이 있는 곳입니다.
스테이징 영역다음 커밋에 넣기로 고른 변경을 모아 두는 대기 공간입니다. git add 로 올립니다.
커밋(Commit)스테이징된 변경을 메시지와 함께 기록한 저장 시점입니다. 고유한 해시(ID)로 구분합니다.
HEAD지금 작업 기준이 되는 커밋을 가리키는 표시입니다. 보통 현재 브랜치를 거쳐 그 최신 커밋을 가리킵니다.
브랜치(Branch)커밋을 가리키는 가벼운 이름표입니다. 갈래를 나눠 main 과 따로 작업할 수 있습니다.
병합(Merge)두 브랜치의 변경을 합치는 것입니다. 한쪽만 앞서 있으면 fast-forward, 양쪽 다 새 커밋이 있으면 병합 커밋이 생깁니다.
충돌(Conflict)두 브랜치가 같은 곳을 다르게 고쳐 Git이 자동으로 합칠 수 없는 상태입니다. 사람이 최종 내용을 골라 해결합니다.
리베이스(Rebase)내 브랜치의 커밋을 다른 브랜치 최신 커밋 뒤로 옮겨 다시 쌓는 것입니다. 공유된 브랜치에는 쓰지 않습니다.
revert 와 resetrevert 는 되돌리는 새 커밋을 추가해 기록을 보존하고, reset 은 브랜치를 과거 커밋으로 옮겨 기록을 고쳐 씁니다.
reflogHEAD가 지나간 위치를 내 컴퓨터에 남긴 기록입니다. reset 으로 사라진 커밋을 되살릴 때 씁니다.
원격 저장소(Remote), originGitHub처럼 네트워크 너머에 있는 저장소입니다. clone 하면 원래 주소가 origin 이라는 이름으로 등록됩니다.
push, fetch, pullpush 는 내 커밋을 원격에 올리기, fetch 는 원격 커밋을 가져오기만, pull 은 가져와서 내 브랜치에 합치기입니다.
풀 리퀘스트(PR)내 브랜치를 다른 브랜치에 합쳐 달라고 요청하고, 그 자리에서 리뷰와 자동 검사를 받는 GitHub 기능입니다.
포크(Fork)남의 저장소를 내 GitHub 계정으로 통째로 복사하는 기능입니다. 쓰기 권한이 없는 프로젝트에 기여할 때 씁니다.
SSH 키공개 키와 개인 키 한 쌍으로 비밀번호 없이 안전하게 인증하는 방법입니다. 공개 키만 GitHub에 등록합니다.
.gitignoreGit이 무시할 파일 이름과 패턴을 적는 파일입니다. 비밀 파일, 로그, 빌드 결과물을 저장소에서 뺍니다.
시맨틱 버저닝(SemVer)MAJOR.MINOR.PATCH 세 숫자로 버전을 붙이는 규칙입니다. 호환이 깨지면 MAJOR, 기능 추가면 MINOR, 버그 수정이면 PATCH 를 올립니다.
CI/CD코드가 올라올 때마다 자동으로 빌드, 테스트하고(CI), 통과한 결과를 자동으로 배포 가능하게 하거나 배포하는(CD) 방식입니다. GitHub Actions, Cloud Build 가 대표 도구입니다.

계속 쓰게 될 자료