1. 브랜치 관련 명령어
로컬 & 원격 브랜치 목록 확인
git branch # 로컬 브랜치 목록 확인
git branch -r # 원격 브랜치 목록 확인
git branch -a # 로컬 + 원격 브랜치 목록 확인
브랜치 생성 & 전환
git checkout -b feature-branch # 새 브랜치 생성 후 이동 (옛날 방식)
git switch -c feature-branch # 새 브랜치 생성 후 이동 (새로운 방식)
브랜치 삭제
git branch -d feature-branch # 로컬 브랜치 삭제 (병합된 브랜치만 삭제 가능)
git branch -D feature-branch # 강제 삭제 (병합되지 않은 브랜치도 삭제)
git push origin --delete feature-branch # 원격 브랜치 삭제
2. 커밋 관련 명령어
커밋 로그 보기
git log --oneline --graph --all --decorate # 보기 편하게 로그 출력
git log -p # 커밋별 변경 내용까지 출력
마지막 커밋 수정
git commit --amend -m "새로운 메시지" # 마지막 커밋 메시지 수정
(아직 push하지 않았다면 문제없지만, 이미 push한 경우 강제 푸시 필요함)
git push origin 브랜치명 --force
3. 원격 저장소 관련
원격 저장소 연결 상태 확인
git remote -v
원격 저장소 변경
git remote set-url origin 새로운URL
4. 되돌리기 (Reset & Revert & Checkout)
특정 파일 변경 내용 버리기 (되돌리기)
git checkout -- 파일명 # 해당 파일의 변경 내용 취소
git restore 파일명 # checkout 대신 사용 가능 (새로운 방식)
특정 커밋으로 되돌리기 (하지만 히스토리는 유지)
git revert 커밋ID
특정 커밋까지 되돌리기 (히스토리까지 날려버림)
git reset --hard 커밋ID # 해당 커밋 이후를 다 날림
git push origin 브랜치명 --force # 원격 저장소도 강제 반영
(주의: reset --hard는 협업 중일 때 조심해서 사용해야 함!)
5. Stash (작업 저장 & 임시 보관)
현재 변경 사항을 임시로 저장
git stash
저장한 변경 사항 불러오기
git stash pop # 가장 최근 stash 불러오기 + 삭제
git stash apply # 가장 최근 stash 불러오기 (삭제 안 함)
stash 목록 확인 & 특정 stash 적용
git stash list
git stash apply stash@{1} # 특정 stash 적용
6. Git Fetch vs Pull 차이
원격 저장소에서 최신 정보 가져오기 (병합 X)
git fetch
(이후 git merge origin/main 등을 실행해야 병합됨)
최신 변경 사항을 가져오면서 자동 병합
git pull
(fetch + merge를 한 번에 실행하는 것과 같음)
7. Conflict(충돌) 해결 후 강제 푸시
git push origin 브랜치명 --force-with-lease
(단순 --force보다 안전한 방식으로 충돌 해결 후 강제 푸시할 때 사용)
Git 활용 스킬
- .gitignore 설정:
불필요한 파일 (예: node_modules, .idea/, *.log, target/)을 Git에 포함시키지 않도록 설정. - Git Hooks 활용:
pre-commit, pre-push 훅을 이용해 특정 코드 스타일을 강제할 수 있음. - Rebase를 활용한 깔끔한 커밋 히스토리 유지:
git rebase -i HEAD~3
(마지막 3개 커밋을 인터랙티브 모드로 수정 가능)
- Tag를 이용한 버전 관리:
git tag -a v1.0 -m "Release v1.0"
git push origin v1.0