4.5 KiB
Git을 실제 업무나 프로젝트에서 사용할 때 가장 손에 익어야 하는 핵심 명령어들을 상세 옵션과 함께 정리해 드립니다.
1. 저장소 설정 및 시작
프로젝트를 시작하거나 서버에서 가져올 때 사용합니다.
git init: 현재 디렉토리를 Git 저장소로 초기화합니다.git clone <url>: 원격 저장소를 복제합니다.-b <branch_name>: 특정 브랜치만 지정해서 복제할 때 사용합니다.--depth 1: 전체 히스토리가 아닌 최신 커밋 하나만 가져옵니다. (용량이 큰 프로젝트를 빠르게 받을 때 유용)
2. 작업 변경 사항 관리 (Stage & Commit)
파일의 변화를 기록하는 단계입니다.
-
git add <file>: 파일을 스테이징 영역(Index)에 올립니다. -
git add .: 수정된 모든 파일을 한꺼번에 올립니다. -
git add -p: 파일 내의 수정 사항을 부분적으로(Hunk 단위) 선택해서 올릴 수 있습니다. (강력 추천!) -
git commit: 버전을 생성합니다. -
-m "message": 에디터를 열지 않고 바로 커밋 메시지를 작성합니다. -
--amend: 마지막 커밋을 수정합니다. (메시지 오타나 빠뜨린 파일을 추가할 때 사용)
3. 상태 확인 및 이력 조회
현재 상황이 어떤지, 과거에 무슨 일이 있었는지 확인합니다.
-
git status: 현재 작업 트리와 스테이징 영역의 상태를 보여줍니다. -
git log: 커밋 히스토리를 조회합니다. -
--oneline: 커밋 한 줄로 요약해서 보기. -
--graph --all: 브랜치 흐름을 시각적인 그래프로 보기. -
-p: 각 커밋의 실제 코드 변경 사항(diff)까지 포함해서 보기. -
git diff: 수정 사항 비교. -
git diff --staged:add된 파일과 마지막 커밋의 차이점을 확인합니다.
4. 브랜치와 병합 (Branch & Merge)
독립적인 작업 공간을 만들고 합칩니다.
-
git branch: 브랜치 목록 보기. -
git branch <name>: 새 브랜치 생성. -
-d <name>: 사용이 끝난 브랜치 삭제. -
git checkout <branch>: 브랜치 이동. (최신 버전에서는git switch권장) -
-b <name>: 브랜치 생성과 동시에 이동하기. -
git merge <target>: 현재 브랜치에 대상 브랜치를 합칩니다. -
--no-ff: Fast-forward 관계라도 강제로 머지 커밋을 남겨 기록을 보존합니다.
5. 원격 저장소 동기화 (Remote)
외부 서버(GitHub, Gitea 등)와 데이터를 주고받습니다.
-
git remote: 원격 저장소 설정. -
add origin <url>: 주소를origin이라는 별명으로 등록합니다. -
-v: 현재 연결된 원격 저장소 주소 확인. -
git push: 로컬 변경 사항을 서버에 올립니다. -
-u origin <branch>: 처음 푸시할 때 사용하며, 이후엔 브랜치명 없이git push만 써도 되게 설정합니다. -
--force(주의!): 서버의 내용을 내 로컬 내용으로 강제로 덮어씁니다. (협업 시 주의) -
git pull: 서버의 내용을 가져와서 현재 브랜치에 합칩니다. (fetch+merge)
6. 실수했을 때 되돌리기 (Undo)
지옥에서 살아 돌아오는 유용한 명령어입니다.
-
git reset: 특정 시점으로 되돌아갑니다. -
--soft: 커밋만 취소하고 수정된 파일 내용은 그대로 둡니다. -
--mixed(기본값): 커밋과add모두 취소하지만 파일 내용은 유지합니다. -
--hard: 해당 커밋 이후의 모든 변경 사항을 완전히 삭제합니다. -
git revert <commit_id>: 기존 커밋을 삭제하는 대신, 반대되는 커밋을 새로 만들어 안전하게 되돌립니다. (협업 중인 서버에 이미 올라간 커밋을 취소할 때 필수) -
git stash: 하던 작업을 잠시 임시 보관함에 치워둡니다. (브랜치를 급하게 바꿔야 할 때 유용) -
pop: 마지막에 저장한 작업을 다시 꺼내옵니다.
💡 실무 팁: 한 줄 요약 루틴
보통 출근해서는 pull로 시작하고, 퇴근 전에는 add -> commit -> push 순서로 마무리하는 습관을 들이는 것이 좋습니다.
혹시 이 중에서 git rebase 처럼 좀 더 심화된 커밋 정리 방법이 궁금하신가요? 아니면 특정 상황(예: 잘못 push한 파일 지우기 등)에 대한 해결책이 필요하신가요?