

Git의 기본 워크플로는 작업 디렉토리(Working Directory), 스테이징 영역(Staging Area), 로컬 저장소(Local Repository), 그리고 원격 저장소(Remote Repository)로 구성됩니다. 이 단계들은 Git이 파일 변경 내역을 스냅샷으로 관리하고 협업을 가능하게 만드는 핵심 과정입니다.
Git은 변경된 파일의 전체 복사본을 저장하는 대신, 각 변경 시점의 상태를 스냅샷(Snapshot) 형태로 기록합니다.
작업 디렉토리는 사용자가 실제로 파일을 작업하는 공간입니다. 프로젝트의 소스 파일이 저장되어 있고, 변경 작업이 이뤄집니다.
git status # 현재 파일 상태 확인
git diff # 변경된 파일 비교
git add <파일명> # 변경된 파일을 스테이징 영역으로 이동
스테이징 영역은 커밋할 파일을 잠시 보관하는 공간으로, 변경 내역을 정리하고 커밋 준비를 하는 단계입니다.
git add . # 현재 디렉터리 내 모든 변경된 파일 추가
git add -A # 프로젝트 내 모든 변경된 파일 추가
git reset HEAD <파일명> # 특정 파일을 스테이징 영역에서 제거
로컬 저장소는 작업 내역(커밋)을 기록하고 관리하는 공간으로, 각 커밋은 고유한 ID로 추적됩니다.
git commit -m "커밋 메시지" # 변경 내용을 로컬 저장소에 기록
git commit --amend # 마지막 커밋 수정
git log --oneline # 커밋 내역 간략히 확인
git branch # 현재 존재하는 브랜치 목록 확인
git checkout -b new-branch # 새로운 브랜치 생성 및 이동
원격 저장소는 로컬 저장소와 동기화하여 협업할 수 있는 온라인 저장소입니다.
예: GitHub, GitLab, Bitbucket 등.
git push origin <branch> # 로컬 브랜치를 원격 저장소로 전송
git push -u origin <branch> # 기본 업스트림 브랜치 설정 후 푸시
git pull origin <branch> # 원격 저장소에서 최신 변경 사항 가져오기
git fetch # 원격 저장소의 변경 사항을 가져오지만 병합은 하지 않음
git push -u origin <branch> 설명
git push: 원격 저장소로 변경 사항을 업로드-u 또는 --set-upstream: 현재 로컬 브랜치와 원격 브랜치를 연결(업스트림 설정)origin: 원격 저장소 이름 (기본적으로 origin이 사용됨)<branch>: 현재 로컬에서 작업 중인 브랜치 이름위 명령어를 실행하면 업로드한 브랜치를 기본 업스트림 브랜치로 설정하게 됩니다. 즉, 이후 git push 또는 git pull 명령어를 실행할 때 origin <branch>를 자동으로 참조하게 됩니다.
업스트림 브랜치란?
업스트림 브랜치는 로컬 브랜치와 원격 브랜치 간의 연결을 의미합니다.
git pull 또는 git push 시 자동으로 원격 브랜치를 추적할 수 있습니다.git push origin <branch>처럼 원격 저장소와 브랜치를 명시해야 합니다.git push, git pull 명령만으로 간단하게 푸시 및 풀을 할 수 있습니다.git merge: 현재 브랜치에 다른 브랜치를 병합 (새로운 커밋이 생성됨)git rebase: 현재 브랜치를 다른 브랜치 위로 옮김 (히스토리를 깔끔하게 유지 가능)Git은 작업 디렉터리(Workding Directory) → 스테이징 영역(Staging Area) → 로컬 저장소(Local Repository) → 원격 저장소(Remote Repository)로 이어지는 워크플로를 통해 변경 사항을 효율적으로 관리할 수 있습니다.
git push전까지는 모든 변경 사항이 로컬에만 존재하며, 협업을 위해서는 git push와 git pull을 활용해야 합니다. 또, Git의 스냅샷 방식 덕분에 프로젝트의 특정 상태로 쉽게 되돌아갈 수 있으며, 효율적인 버전 관리가 가능합니다.