[Git] Git 기초

코드의 변경 이력을 추적하고 관리할 수 있게 해주는 도구인 Git을 알아보고자 한다.


📌 Git이란?

Git은 분산 버전 관리 시스템이다. 리누스 토르발스가 리눅스 커널 개발을 위해 만든 이 시스템은 현재 전 세계 개발자들이 사용하는 표준 도구가 되었다.

✨ Git의 주요 특징

분산형 구조로 인해 각 개발자가 완전항 복사본을 가질 수 있다. 이는 중앙 서버에 문제가 생겨도 작업을 계속 할 수 있는 장점이 있고, 브랜치와 병합이 매우 빠르고 효율적이어서 다양한 기능을 동시에 개발하기에 적합하다.

속도와 효율성 측면에서도 뛰어나다. 대부분의 작업이 로컬에서 이루어지기 때문에 네트워크 지연 없이 빠른 처리가 가능하다.

❓ 왜 Git을 사용하는가?

프로젝트를 진행하다 보면 아래와 같은 상황이 발생할 수 있다.

  • “이전 버전으로 돌아가고 싶다”
  • “누가 언제 이 코드를 수정했는지 알고 싶다”
  • “여러 사람이 동시에 작업하다가 충돌이 생겼다”

Git은 이러한 문제를 모두 해결해주는 도구이다.

여러 개발자가 동시에 협업하고, 코드 변경 이력을 관리할 수 있도록 도와준다.


🗂 Git의 3가지 영역

Git은 작업 디렉토리, 스테이징 영역, 그리고 저장소라는 세 가지 공간이 존재한다.

  • 작업 디렉토리

    작업 디렉토리는 실제 파일들이 있는 곳으로, 개발자가 코드를 수정하는 공간이다. 이곳에서 파일을 생성, 수정, 삭제할 수 있다.

  • 스테이징 영역

    커밋할 준비가 된 변경사항들이 모이는 중간 단계다. git add 명령어를 사용하면 이 스테이징 영역에 변경사항이 추가되고, 이 영역을 통해 커밋에 포함될 내용을 관리할 수 있다.

  • 저장소

    커밋된 변경사항들이 저장되는 곳이다. .git 폴더에 모든 히스토리가 보관되며, 프로젝트의 전체 변경 이력을 담고 있다.


🛠 Git 기본 명령어

  1. git init – Git 저장소 초기화

    현재 디렉토리를 Git 저장소로 만들어 .git 폴더가 생성된다.

    git init
    

    새 프로젝트를 Git으로 관리하려면 제일 먼저 실행해야 한다.

  2. git clone <URL> – 원격 저장소 복제

    GitHub 같은 원격 저장소를 로컬로 복제한다.

    git clone https://github.com/user/repo.git
    

    이미 존재하는 저장소를 가져와 작업할 때 사용한다.

  3. git status – 상태 확인

    현재 파일들의 변경 상태를 보여준다.

    git status
    

    어떤 파일이 수정되었고, 스테이징되었는지 확인할 수 있다.

  4. git add – 변경사항 스테이징

    변경된 파일을 스테이징 영역에 추가한다.

    git add index.js         # 특정 파일 추가
    git add .                # 현재 디렉토리의 모든 변경사항 추가
    git add *.js             # 특정 확장자 파일들만 추가
    

    커밋 전에 어떤 변경을 포함할지 명시하는 단계다.

  5. git commit -m "메시지" – 변경사항 기록

    스테이징된 변경사항을 로컬 저장소에 커밋한다.

    git commit -m "Add login feature"
    git commit -am "Fix bug in navigation"  # add와 commit을 동시에
    

    커밋 메시지는 변경 내용을 명확히 요약하는 게 중요하다.

  6. git push - 원격 저장소에 업로드

    로컬 저장소의 커밋들을 원격 저장소로 업로드한다.

    git push origin main     # main 브랜치에 업로드
    git push -u origin main  # 최초 업로드 시 추적 브랜치 설정
    

    원격 저장소에 변경 사항을 반영할 때 사용한다.

  7. git pull - 원격 저장소에서 가져오기

    원격 저장소의 최신 변경사항을 로컬로 가져와서 병합한다.

    git pull origin main     # main 브랜치의 변경사항 가져오기
    

    다른 개발자들의 최신 작업을 받아올 때 사용한다.

  8. git log – 커밋 히스토리 보기

    커밋 이력을 시간순으로 확인한다.

    git log                  # 상세한 커밋 히스토리
    git log --oneline        # 간략한 한 줄 형태
    git log --graph          # 브랜치 그래프와 함께
    

    프로젝트의 변경 이력을 추적할 때 유용하다.

  9. git diff – 변경사항 비교

    작업 디렉토리와 스테이징 영역 사이의 차이를 보여준다.

    git diff                 # 모든 변경사항 확인
    git diff index.js        # 특정 파일의 변경사항
    git diff --staged        # 스테이징된 변경사항 확인
    

    파일을 커밋하기 전에 어떤 변경이 있었는지 확인할 때 유용하다.

  10. git reset – 변경사항 되돌리기

    스테이징한 파일을 다시 작업 디렉토리로 되돌린다.

    git reset HEAD index.js  # 특정 파일의 스테이징 취소
    git reset --soft HEAD~1  # 최근 커밋을 취소하고 변경사항은 스테이징 유지
    git reset --hard HEAD~1  # 최근 커밋과 변경사항 모두 취소
    

    실수로 add한 파일을 다시 뺄 수 있다.

    --hard 옵션은 변경사항을 완전히 삭제하므로 신중하게 사용해야 한다.

  11. 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을 활용해서 체계적이고 효과적인 코드 관리를 시작해보자! 🔥

Categories:

Updated:

Leave a comment