본문 바로가기

[Git] Git의 기초

@cayman0312026. 1. 6. 16:30

Git이란

Git은 한마디로 버전 관리 도구이다.

  • 작업하다가 “여기까지는 괜찮다!” 싶은 순간을 커밋(commit) 으로 저장해두고
  • 실수하거나 망가졌을 때 예전 상태로 되돌아갈 수 있다.
  • 여러 명이 동시에 작업해도, 각자 만든 변경을 안전하게 합치고(merge) 공유할 수 있다.

비유해서 말하자면,

  • Git = 게임에서 세이브/로드
  • GitHub/GitLab = 세이브 파일을 팀이 같이 쓰는 클라우드 보관함

Git이 파일을 관리하는 3단계

Git은 파일을 이렇게 3단계로 본다.

  1. Working Directory: 내가 그냥 수정 중인 상태(아직 저장 전)
  2. Staging Area: “이 변경은 저장할래!” 하고 선택해서 올려둔 공간 (git add)
  3. Repository: 진짜로 저장된 상태(세이브 포인트) (git commit)

즉, 실무에서 가장 중요한 흐름은 항상 다음과 같다.

수정 → add → commit

 


실무에서 안전하게 활용하는법

작업하기 전에 습관처럼 치면 깃을 관리하다 사고가 터질 일을 줄일 수 있다.(꼭! 확인하자)

git status
git log --oneline --decorate -n 10
git branch
  • git status : 지금 뭐가 바뀌었는지(수정/스테이징 여부)
  • git log ... : 최근 세이브 기록(커밋)을 빠르게 확인
  • git branch : 내가 지금 어느 브랜치에 있는지 확인

저장소 시작: init vs clone

새 프로젝트에 Git 적용

git init
  • 현재 폴더에 .git이라는 버전관리용 폴더가 생긴다.

기존 레포를 내려받아 시작(실무에서 제일 흔한 패턴)

git clone 레포주소

예:

git clone https://github.com/org/project.git
  • 실무는 보통 이미 팀 레포가 있어서 clone이 더 많이 쓰인다.
  • clone하면 원격 저장소(origin)도 자동으로 연결된다.

변경 확인: status / diff

상태 확인

git status

여기서 눈여겨 봐야할 점은 다음과 같다.

  • modified: 파일 바뀜(아직 저장 전)
  • staged: add 됨(저장 준비 완료)
  • untracked: Git이 아직 모르는 새 파일

어떤 내용이 바뀌었는지 보기

git diff
  • 아직 add 안 한 변경 확인

스테이징된 변경만 보고 싶으면

git diff --staged

저장(커밋)하기: add → commit

스테이징(add)

파일 하나만

git add app.js

전부

git add .

변경을 ‘조각’ 단위로 골라 담기(실무에서 유용하게 사용 가능하다.)

git add -p
  • 한 파일에 버그 수정 + 포맷팅이 섞였을 때, 버그 수정만 먼저 커밋하고 싶다면 add -p를 통해서 커밋할 수 있다.

커밋(commit): 세이브 포인트 만들기

git commit -m "Fix login button click bug"

기록 보기

git log --oneline

브랜치 흐름까지 한눈에

git log --oneline --graph --decorate --all

브랜치: main에 바로 작업하지 않기(실무 핵심)

실무에서 main(또는 master) 브랜치는 보통 항상 배포 가능한 상태를 유지하는 경우가 많다.

따라서 새 기능/버그수정은 보통 이렇게 브랜치를 새로 따서 최대한 작은 작업 단위로 작업한 후 변경하는 경우가 많다.

브랜치 만들고 이동

git switch -c feature/login

과거의 방식(나는 이 방법을 주로 사용했었는데 과거의 방식이였다.)

git checkout -b feature/login

브랜치 이동

git switch main

합치기(merge)

git switch main
git merge feature/login

실무는 보통 merge 자체를 로컬에서 직접 하기보단, GitHub에서 PR(Pull Request) 만들어서 리뷰 받고 머지하는 흐름이 많다.


원격(Remote): GitHub와 주고받기 (pull / push)

원격 연결 상태 확인

git remote -v

원격 저장소 연결(init로 시작했을 때)

git remote add origin 레포주소

원격에서 최신 가져오기

git pull
  • 쉽게 말하면 “원격 최신 상태를 내 컴퓨터에 받아서 합치는 것”

내 커밋을 원격으로 올리기

처음 한 번은 이렇게 진행하도록 하자.

git push -u origin feature/login
  • -u는 “다음부터 git push만 쳐도 이 브랜치로 올려!” 설정이라고 보면 된다.

충돌(Conflict)

충돌은 보통 pull이나 merge할 때 발생한다.

  • 어떤 파일에서 충돌 났는지 확인
git status
  • 충돌 파일 열면 이런 표시가 존재할것이다.
<<<<<<< HEAD
내 변경
=======
상대 변경
>>>>>>> branch-name
  • 사람이 최종 결과로 정리하고 위 표시들을 삭제
  • 그다음 저장하고
git add 충돌파일
git commit

되돌리기/복구

add 취소(스테이징 취소)

git restore --staged 파일

파일 수정 취소(주의: 변경 내용 사라질 수 있음)

git restore 파일

마지막 커밋 메시지/내용 수정(amend)

git commit --amend -m "새 메시지"
  • 방금 커밋을 ‘덮어쓰기’ 느낌
  • 이미 원격에 push한 커밋을 amend하면 팀이랑 히스토리가 꼬일 수 있어서 조심해야한다.

협업에서 안전한 되돌리기(revert)

git revert 커밋해시
  • 과거 커밋을 삭제하는 게 아니라 취소 커밋을 새로 만든다
  • 그래서 협업에서 안전하게 사용할 수 있다.

강력하지만 위험한 reset(사용 주의!)

git reset --hard 커밋해시
  • 히스토리 자체를 바꿀 수 있어 위험하다.
  • 혼자 작업 중이고 원격에 push 안 했을 때만 신중히 사용하도록 하자.

마무리

Git은 처음엔 명령어가 많아 보여도, 실무에서 자주 쓰는 건 정해져 있는것을 알 수 있다.

status → diff → add → commit → push

그리고 main에 바로 작업하지 않고 브랜치로 작업하는 습관만 잡아도 팀 협업이 훨씬 안전해지니 습관을 들이도록하자. 무조건 작업을 하나 시작하기전엔 일단 작업 브랜치 따고 생각하기!

 

cayman031
@cayman031 :: 그누로그

목차