[Git] Git 기초
코드의 변경 이력을 추적하고 관리할 수 있게 해주는 도구인 Git을 알아보고자 한다.
📌 Git이란?
Git은 분산 버전 관리 시스템이다. 리누스 토르발스가 리눅스 커널 개발을 위해 만든 이 시스템은 현재 전 세계 개발자들이 사용하는 표준 도구가 되었다.
✨ Git의 주요 특징
분산형 구조로 인해 각 개발자가 완전항 복사본을 가질 수 있다. 이는 중앙 서버에 문제가 생겨도 작업을 계속 할 수 있는 장점이 있고, 브랜치와 병합이 매우 빠르고 효율적이어서 다양한 기능을 동시에 개발하기에 적합하다.
속도와 효율성 측면에서도 뛰어나다. 대부분의 작업이 로컬에서 이루어지기 때문에 네트워크 지연 없이 빠른 처리가 가능하다.
❓ 왜 Git을 사용하는가?
프로젝트를 진행하다 보면 아래와 같은 상황이 발생할 수 있다.
- “이전 버전으로 돌아가고 싶다”
- “누가 언제 이 코드를 수정했는지 알고 싶다”
- “여러 사람이 동시에 작업하다가 충돌이 생겼다”
Git은 이러한 문제를 모두 해결해주는 도구이다.
여러 개발자가 동시에 협업하고, 코드 변경 이력을 관리할 수 있도록 도와준다.
🗂 Git의 3가지 영역
Git은 작업 디렉토리, 스테이징 영역, 그리고 저장소라는 세 가지 공간이 존재한다.
-
작업 디렉토리
작업 디렉토리는 실제 파일들이 있는 곳으로, 개발자가 코드를 수정하는 공간이다. 이곳에서 파일을 생성, 수정, 삭제할 수 있다.
-
스테이징 영역
커밋할 준비가 된 변경사항들이 모이는 중간 단계다.
git add
명령어를 사용하면 이 스테이징 영역에 변경사항이 추가되고, 이 영역을 통해 커밋에 포함될 내용을 관리할 수 있다. -
저장소
커밋된 변경사항들이 저장되는 곳이다.
.git
폴더에 모든 히스토리가 보관되며, 프로젝트의 전체 변경 이력을 담고 있다.
🛠 Git 기본 명령어
-
git init
– Git 저장소 초기화현재 디렉토리를 Git 저장소로 만들어
.git
폴더가 생성된다.git init
새 프로젝트를 Git으로 관리하려면 제일 먼저 실행해야 한다.
-
git clone <URL>
– 원격 저장소 복제GitHub 같은 원격 저장소를 로컬로 복제한다.
git clone https://github.com/user/repo.git
이미 존재하는 저장소를 가져와 작업할 때 사용한다.
-
git status
– 상태 확인현재 파일들의 변경 상태를 보여준다.
git status
어떤 파일이 수정되었고, 스테이징되었는지 확인할 수 있다.
-
git add
– 변경사항 스테이징변경된 파일을 스테이징 영역에 추가한다.
git add index.js # 특정 파일 추가 git add . # 현재 디렉토리의 모든 변경사항 추가 git add *.js # 특정 확장자 파일들만 추가
커밋 전에 어떤 변경을 포함할지 명시하는 단계다.
-
git commit -m "메시지"
– 변경사항 기록스테이징된 변경사항을 로컬 저장소에 커밋한다.
git commit -m "Add login feature" git commit -am "Fix bug in navigation" # add와 commit을 동시에
커밋 메시지는 변경 내용을 명확히 요약하는 게 중요하다.
-
git push
- 원격 저장소에 업로드로컬 저장소의 커밋들을 원격 저장소로 업로드한다.
git push origin main # main 브랜치에 업로드 git push -u origin main # 최초 업로드 시 추적 브랜치 설정
원격 저장소에 변경 사항을 반영할 때 사용한다.
-
git pull
- 원격 저장소에서 가져오기원격 저장소의 최신 변경사항을 로컬로 가져와서 병합한다.
git pull origin main # main 브랜치의 변경사항 가져오기
다른 개발자들의 최신 작업을 받아올 때 사용한다.
-
git log
– 커밋 히스토리 보기커밋 이력을 시간순으로 확인한다.
git log # 상세한 커밋 히스토리 git log --oneline # 간략한 한 줄 형태 git log --graph # 브랜치 그래프와 함께
프로젝트의 변경 이력을 추적할 때 유용하다.
-
git diff
– 변경사항 비교작업 디렉토리와 스테이징 영역 사이의 차이를 보여준다.
git diff # 모든 변경사항 확인 git diff index.js # 특정 파일의 변경사항 git diff --staged # 스테이징된 변경사항 확인
파일을 커밋하기 전에 어떤 변경이 있었는지 확인할 때 유용하다.
-
git reset
– 변경사항 되돌리기스테이징한 파일을 다시 작업 디렉토리로 되돌린다.
git reset HEAD index.js # 특정 파일의 스테이징 취소 git reset --soft HEAD~1 # 최근 커밋을 취소하고 변경사항은 스테이징 유지 git reset --hard HEAD~1 # 최근 커밋과 변경사항 모두 취소
실수로
add
한 파일을 다시 뺄 수 있다.--hard
옵션은 변경사항을 완전히 삭제하므로 신중하게 사용해야 한다. -
git rm <파일>
– 파일 삭제 및 추적 제거파일을 삭제하고 Git에서도 추적 대상에서 제거한다.
git rm test.txt # 파일 삭제 및 Git 추적 제거 git rm --cached file.txt # Git 추적만 제거하고 파일은 유지
물리적으로 파일도 삭제되며, 커밋 시 반영된다.
🧾 Git 명령어 요약
명령어 | 설명 요약 |
---|---|
git init |
현재 폴더를 Git 저장소로 초기화 |
git clone |
원격 저장소 복제 |
git status |
파일 상태 확인 |
git add |
변경사항 스테이징 |
git commit |
변경사항 커밋 |
git push |
원격 저장소에 업로드 |
git pull |
원격 저장소에서 변경사항 가져오기 |
git log |
커밋 이력 확인 |
git diff |
변경 내용 확인 |
git reset |
변경사항 되돌리기 |
git rm |
파일 삭제 및 추적 제거 |
Git은 이 글에서 다룬 기본 명령어 외에도 브랜치 관리, 충돌 해결, 태그 생성 등 더 많은 기능을 제공한다.
처음에는 어렵게 느껴질 수 있지만, Git은 개발에서 중요한 도구이고 꾸준히 사용하면 자연스럽게 익숙해질 것이다.
Git을 활용해서 체계적이고 효과적인 코드 관리를 시작해보자! 🔥
Leave a comment