다다의 개발일지 6v6

[Git] git 명령어 정리해보자!! - 완벽하게 이해하기 (기본명령어, flow명령어 등) 본문

DevTools

[Git] git 명령어 정리해보자!! - 완벽하게 이해하기 (기본명령어, flow명령어 등)

dev6v6 2025. 3. 22. 23:11

Git 명령어 정리

1️⃣ Git 기본 명령어

git init 현재 디렉토리를 Git 저장소로 초기화
git clone [저장소 URL] 원격 저장소를 로컬로 복사
git status 현재 작업 디렉토리의 변경 사항 확인
git add [파일명]  특정 파일을 스테이징 영역에 추가 
이거보단 그냥 IDE에서 개별적으로 추가하는게 나을 거 같다.
git add . 모든 변경 사항을 스테이징 영역에 추가
git commit -m "메시지" 스테이징된 변경 사항을 로컬 저장소에 커밋
git log 커밋 히스토리 확인
git log --oneline 커밋 히스토리를 한 줄씩 요약해서 확인
git diff 수정된 내용 비교
git diff --staged 스테이징된 파일과 최신 커밋 비교
git reset HEAD [파일명] 특정 파일을 스테이징에서 제외
git reset --hard HEAD 마지막 커밋 상태로 모든 변경 사항을 되돌림

 

git init  좀 더 자세한 설명

더보기

git init은 Git 저장소를 새로 생성하는 명령어이다.

  1. 현재 디렉터리를 Git 저장소로 변환한다.
  2. .git이라는 숨김 폴더가 생성되며, 여기에 Git이 버전 관리를 위한 정보(커밋, 브랜치 등)를 저장.
  3. 이후 git add, git commit 등을 사용하여 파일을 추적하고 변경 사항을 기록할 수 있음.

특징

한 번만 실행하면 됨 → 프로젝트에서 git init은 한 번만 실행하면 됨.
로컬에서만 영향을 줌 → git init은 로컬 저장소를 만들 뿐, 원격 저장소(GitHub 등)와는 아직 연결되지 않는다.
기존 저장소에서 다시 실행 가능 → 이미 Git으로 관리 중인 폴더에서 실행해도 .git 폴더가 그대로 유지됨.

 git init 이후에 해야 할 것

  1. 파일 추가 및 커밋
    git add .
    git commit -m "First commit"
    
  2. 원격 저장소(GitHub 등) 연결 (선택 사항)
    git remote add origin https://github.com/user/repo.git
    git push -u origin main
    

 

 

2️⃣ 브랜치 관련 명령어

git branch 현재 브랜치 목록 확인
git branch [브랜치명] 새로운 브랜치 생성
git checkout [브랜치명] 특정 브랜치로 이동
git switch [브랜치명] checkout의 새로운 대체 명령어
git checkout -b [브랜치명] 새 브랜치를 만들고 이동
git switch -c [브랜치명] checkout -b와 동일한 기능
git merge [다른 브랜치명] 다른 브랜치를 현재 브랜치로 병합
git rebase [다른 브랜치명] 다른 브랜치의 최신 커밋을 현재 브랜치에 적용
git branch -d [브랜치명] 병합된 브랜치 삭제
git branch -D [브랜치명] 강제 삭제

 

3️⃣ 원격 저장소 관련 명령어

git remote -v 연결된 원격 저장소 목록 확인
git remote add origin [저장소 URL] 원격 저장소 추가
git fetch origin 원격 저장소의 최신 변경 사항 가져오기 (병합 X)
git pull origin [브랜치명] 원격 저장소의 변경 사항을 가져와 병합
git push origin [브랜치명] 로컬 브랜치를 원격 저장소에 업로드
git push origin --delete [브랜치명] 원격 저장소의 브랜치 삭제
git push --force 강제 푸시 (주의: 기존 커밋 덮어쓰기 가능)

 

fetch vs pull 차이

더보기

git fetch가 하는 일

원격 저장소의 최신 상태(브랜치, 태그, 커밋 등)를 로컬에 가져옴

하지만 작업 중인 로컬 브랜치에는 영향을 주지 않음

즉, push된 커밋만 가져오고, 아직 push되지 않은 커밋은 가져오지 않음

 

git fetch vs git pull

git fetch 원격 저장소에서 변경 사항을 가져오기만 함 (로컬 브랜치는 그대로)
git pull git fetch + git merge (가져온 후 자동으로 현재 브랜치에 병합)

 

4️⃣ 협업 관련 명령어 (Stash & Reset) - 유용

git stash 현재 변경 사항을 임시 저장하고 깨끗한 상태로 되돌림
git stash pop 가장 최근에 저장한 stash를 적용 후 삭제
git stash apply 가장 최근 stash 적용 (삭제는 안 됨)
git stash list 저장된 stash 목록 확인
git stash drop [stash@{n}] 특정 stash 삭제
git stash clear 모든 stash 삭제
git reset --soft HEAD~1 최근 커밋을 취소하고 변경 사항을 유지
git reset --mixed HEAD~1 최근 커밋을 취소하고, 스테이징 제거 (파일 내용은 유지)
git reset --hard HEAD~1 최근 커밋을 완전히 삭제 (복구 불가)

 

5️⃣ Rebase & Merge 관련 명령어

git merge [브랜치명] 해당 브랜치를 현재 브랜치로 병합
git rebase [브랜치명] 커밋을 새롭게 정렬하여 병합
git rebase -i HEAD~3 마지막 3개의 커밋을 수정/병합
git cherry-pick [커밋 해시] 특정 커밋만 선택하여 적용
git revert [커밋 해시] 특정 커밋을 취소하는 새로운 커밋 생성

 

Git Flow (브랜치 전략)

2025.03.14 - [DevTools] - [Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략

 

[Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략

Git Flow란?Git Flow는 Git을 활용한 브랜치 전략(Workflow) 중 하나이다.✅ 협업을 쉽게 하기 위해 브랜치 역할을 명확히 구분✅ 안정적인 배포를 위해 개발/배포 단계별 브랜치를 운영✅ 새로운 기능

dev6v6.tistory.com

 

git flow의 finish 명령어는 기본적으로 로컬에서만 브랜치를 병합하고 삭제

git flow feature finish 기능이름                      # 로컬에서 병합 및 삭제
git push origin develop                                  # develop 브랜치를 원격에 반영
git push origin --delete feature/기능이름       # 원격 브랜치 삭제
git flow init Git Flow 초기화
git flow feature start [기능명] 새로운 기능 개발 브랜치 생성
git flow feature finish [기능명] 개발 완료 후 feature 브랜치 병합 및 삭제
git flow release start [버전명] 배포 준비 브랜치 생성
git flow release finish [버전명] 배포 완료 후 main 및 develop에 병합
git flow hotfix start [핫픽스명] 긴급 버그 수정 브랜치 생성
git flow hotfix finish [핫픽스명] 버그 수정 완료 후 main 및 develop에 반영

 

좀 더 자세한 설명

더보기

Git Flow 기본 명령어

 

먼저 git flow를 설치해야 한다.

 

1️⃣ Git Flow 초기화

git flow init

 

👉 Git Flow를 프로젝트에서 사용할 수 있도록 초기화. (main, develop 브랜치를 자동으로 만들어 줌)


2️⃣ Feature 브랜치 (새 기능 개발)

  • 새로운 기능을 개발할 때 사용
git flow feature start 기능이름

 

어떤 브랜치에 있든 자동으로 develop 브랜치로 이동한 뒤 feature 브랜치를 생성해 준다!!

즉, 현재 브랜치가 main이어도 develop을 기준으로 feature 브랜치를 생성

 

1. develop 브랜치로 이동

2. feature/기능이름 브랜치 생성

3. 생성된 브랜치로 체크아웃

 

  • 개발 완료 후 develop으로 병합
git flow feature finish 기능이름

 

feature 브랜치 작업 끝나면 finish하기 전에 커밋까지 완료해야한다.

 

git flow feature finish 전에 해야 할 것들

1. 변경 사항 add & commit 필수

git flow feature finishgit merge --no-ff를 내부적으로 실행

feature 브랜치의 변경 사항을 develop에 병합하므로 반드시 커밋이 필요함.

 

2. 자동으로 진행되는 작업

develop 브랜치로 이동

feature 브랜치를 develop에 병합

로컬 feature 브랜치 삭제

원격 feature 브랜치 삭제 (-r 옵션 없으면 원격 브랜치는 유지됨 -> 기본은 원격 브랜치 유지)

 

그 다음 develop에서 push 하고 request 보내고 merge 하면 된다.

이때 만약 나중에 원격 브랜치에서 pull 받아올 일이 있다면 기능 브랜치에 push까지 해주고 finish해야한다.


3️⃣ Release 브랜치 (배포 전 준비)

  • 배포할 버전을 준비할 때 사용
git flow release start 1.0.0

 

👉 develop 브랜치에서 release/1.0.0 브랜치를 생성

 

  • 배포 완료 후 병합
git flow release finish 1.0.0

 

👉 release/1.0.0을 main과 develop에 병합하고 태그를 생성


4️⃣ Hotfix 브랜치 (긴급 버그 수정)

  • 제품에서 발생한 긴급한 버그를 수정할 때 사용
git flow hotfix start 버그수정이름

 

👉 main 브랜치에서 hotfix/버그수정이름 브랜치를 생성

 

  • 버그 수정 후 배포
git flow hotfix finish 버그수정이름

 

👉 hotfix/버그수정이름을 main과 develop에 병합하고 태그를 생성