| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- git flow finish
- 책으론 원리만
- 힘들었던 한주
- CSS
- 공부할 거 넘많다~
- 클라이언트 컴포넌트
- freecodecamp
- 바닐라JS
- AJAX
- HTML
- api 라우트
- js
- Next.js
- 서버 컴포넌트
- javascript30
- jQuery
- Main
- 실무는 공식문서로
- Mac
- 끝까지 잘 마무리하기
- fetch pull 차이
- 차이점
- axios
- 백준
- JavaScript
- git flow start
- git
- TS
- 다시 홧팅
- 개발일지
- Today
- Total
다다의 개발일지 6v6
[Git] git 명령어 정리해보자!! - 완벽하게 이해하기 (기본명령어, flow명령어 등) 본문
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 저장소를 새로 생성하는 명령어이다.
- 현재 디렉터리를 Git 저장소로 변환한다.
- .git이라는 숨김 폴더가 생성되며, 여기에 Git이 버전 관리를 위한 정보(커밋, 브랜치 등)를 저장.
- 이후 git add, git commit 등을 사용하여 파일을 추적하고 변경 사항을 기록할 수 있음.
특징
✅ 한 번만 실행하면 됨 → 프로젝트에서 git init은 한 번만 실행하면 됨.
✅ 로컬에서만 영향을 줌 → git init은 로컬 저장소를 만들 뿐, 원격 저장소(GitHub 등)와는 아직 연결되지 않는다.
✅ 기존 저장소에서 다시 실행 가능 → 이미 Git으로 관리 중인 폴더에서 실행해도 .git 폴더가 그대로 유지됨.
git init 이후에 해야 할 것
- 파일 추가 및 커밋
git add . git commit -m "First commit" - 원격 저장소(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 finish는 git 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에 병합하고 태그를 생성
'DevTools' 카테고리의 다른 글
| [Git] Git Flow - 개발, 테스트, 배포를 체계적으로 관리할 수 있는 강력한 Git 브랜치 전략 (0) | 2025.03.14 |
|---|---|
| [Mac] homebrew - macOS 개발 환경의 필수 패키지 관리자 (0) | 2025.03.09 |
| [Mac] 맥북 마스터하기!! 나를 위한 단축키 + 꿀팁 저장 (0) | 2025.03.04 |