Git 기본 명령어와 실용적인 사용법
Git은 분산형 버전 관리 시스템으로, 소프트웨어 개발에서 코드의 변경 사항을 추적하고 협업을 지원하는 핵심 도구입니다. 주로 원격 저장소(예: GitHub)와 연동하여 팀 프로젝트를 효율적으로 관리할 수 있습니다.
초기 설정 및 저장소 생성
로컬에 새 저장소를 초기화하려면 다음 명령어를 사용합니다. 이 작업은 현재 디렉터리에 .git 폴더를 생성하여 버전 관리를 시작합니다.
git init
원격 저장소를 로컬에 복제하려면 clone 명령어를 사용합니다. 복제된 저장소는 URL의 마지막 부분을 이름으로 가지며, 원하는 이름으로 지정할 수도 있습니다.
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-project
상태 확인 및 비교
현재 작업 상태를 확인하려면 status 명령어를 사용합니다. -s 옵션을 추가하면 간결한 형식으로 출력되며, 첫 번째 열은 스테이징 영역, 두 번째 열은 작업 디렉터리의 변경 내용을 나타냅니다.
git status
git status -s
작업 디렉터리의 변경 사항과 스테이징 영역의 차이를 보고 싶다면 diff 명령어를 사용합니다.
git diff
스테이징 영역과 이전 커밋 사이의 차이를 확인하려면 -cached 옵션을 사용합니다.
git diff --cached
두 개의 브랜치 간의 차이를 비교할 수도 있습니다.
git diff branchA branchB
커밋 전 준비 및 커밋 실행
변경된 파일을 스테이징 영역에 추가하려면 add 명령어를 사용합니다. .을 입력하면 현재 디렉터리의 모든 파일을 포함합니다.
git add .
커밋 전에 작업 내용을 확인하고, 필요한 경우 일부 파일만 추가하거나 제거할 수 있습니다.
git add file1.txt file2.txt
git reset HEAD file.txt # 스테이징에서 제거
모든 트래킹된 파일의 변경 사항을 자동으로 스테이징하고 커밋하려면 -a 옵션을 사용합니다.
git commit -a -m "코드 수정 완료"
이전 커밋을 수정하고자 할 때는 amend 옵션을 사용합니다. 이는 이전 커밋의 메시지나 내용을 덮어쓰는 방식으로 동작합니다.
git commit --amend -m "수정된 메시지"
변경 사항 되돌리기 및 삭제
최근 커밋을 취소하고 싶을 때는 reset 명령어를 사용합니다. HEAD로 포인터를 되돌리면서 스테이징 영역의 변경 사항도 해제됩니다.
git reset HEAD
특정 파일만 스테이징에서 제거하려면 파일명을 지정합니다.
git reset HEAD -- src/main.py
실제 커밋을 삭제하고 싶다면 revert 명령어를 사용합니다. 이는 새로운 반대 커밋을 생성하여 기존 커밋을 무효화하는 방식으로 안전하게 작동합니다.
git revert HEAD
파일 삭제 및 정리
스테이징 영역과 작업 디렉터리에서 파일을 동시에 삭제하려면 rm 명령어를 사용합니다.
git rm old-file.txt
스테이징만 제거하고 작업 디렉터리에는 남겨두고 싶다면 --cached 옵션을 사용합니다.
git rm --cached untracked-file.txt
작업 디렉터리 내에서 추적되지 않은 파일이나 폴더를 정리하려면 clean 명령어를 사용합니다. -d는 디렉터리까지 포함하고, -f는 강제 실행을 의미합니다.
git clean -df
임시 저장 및 복원 (Stash)
작업 중인 변경 사항을 일시적으로 저장하고 싶을 때 stash 명령어를 사용합니다.
git stash
저장된 항목 목록을 확인하려면:
git stash list
최근 저장된 항목을 적용하고 삭제하려면 pop을 사용합니다.
git stash pop
모든 스테이시를 삭제하려면:
git stash clear
브랜치 관리
현재 존재하는 모든 브랜치를 확인합니다.
git branch
새 브랜치를 생성합니다.
git branch feature-login
브랜치를 삭제하려면 -d 옵션을 사용합니다.
git branch -d feature-login
기존 브랜치로 이동하거나, 새로운 브랜치를 생성 후 이동하려면 checkout과 -b를 함께 사용합니다.
git checkout -b bugfix-503
원격 저장소 연동
원격 저장소 정보를 확인합니다.
git remote
새로운 원격 저장소를 추가합니다.
git remote add origin https://github.com/user/project.git
기존 원격 저장소 별칭을 변경하거나 삭제할 수 있습니다.
git remote rename old-name new-name
git remote remove origin
원격 저장소의 주소를 업데이트합니다.
git remote set-url origin https://new-url.com/project.git
원격 저장소에서 새로운 브랜치나 커밋을 가져오려면 fetch를 사용합니다.
git fetch
pull은 fetch와 merge를 하나의 단계로 수행합니다.
git pull origin main
로컬 커밋을 원격 저장소에 업로드하려면 push 명령어를 사용합니다.
git push origin main