카테고리 없음

깃 허브 설명 및 명령어 정리

sundori 2025. 3. 19. 15:39

✅ Git 개념 정리

1. 커밋(Commit)

  • 내 로컬 저장소에 변경사항을 기록하는 것
  • 하나의 스냅샷을 저장하는 것과 같음
  • 반드시 git add로 스테이지에 올린 후 git commit -m "메시지" 수행

2. 풀(Pull)

  • 원격 저장소의 최신 변경사항을 가져오고 내 브랜치에 병합까지 하는 작업
  • 내부적으로 git fetch + git merge를 한 번에 수행
  • 명령어: git pull origin 브랜치명

3. 푸시(Push)

  • 내 로컬 커밋들을 원격 저장소로 업로드하는 것
  • 명령어: git push origin 브랜치명

4. 패치(Fetch)

  • 원격 저장소의 최신 커밋 정보를 가져오기만 하고 적용하지는 않음
  • 로컬 origin/브랜치명에만 반영되고 내 로컬 브랜치는 변하지 않음
  • 명령어: git fetch

5. 브랜치(Branch)

  • 독립된 작업 공간
  • 새로운 기능이나 수정 작업을 다른 브랜치에서 하고 완료 후 병합
  • 명령어: git branch 브랜치명 → 생성 / git checkout 브랜치명 → 이동

6. 병합(Merge)

  • 다른 브랜치의 작업 내용을 현재 브랜치에 합치는 것
  • 명령어: git merge 브랜치명

7. 스태시(Stash)

  • 작업 중인 변경사항을 임시로 보관하는 공간
  • 다른 브랜치로 이동하거나 pull 전에 작업물을 보관할 때 사용
  • 명령어: git stash (저장), git stash pop (복원)

✅ Git 필수 명령어 정리

기능 명령어

변경사항 확인 git status
파일 변경 내역 확인 git diff
파일 스테이징 git add 파일명 / git add . (전체)
커밋 git commit -m "커밋 메시지"
원격 최신 내역 가져오기 git fetch
가져온 내역 병합 git merge origin/브랜치명
가져오고 병합 한 번에 git pull origin 브랜치명
푸시 git push origin 브랜치명
브랜치 목록 보기 git branch
브랜치 생성 git branch 브랜치명
브랜치 이동 git checkout 브랜치명
브랜치 생성 및 이동 git checkout -b 브랜치명
브랜치 삭제 git branch -d 브랜치명
스태시 저장 git stash
스태시 목록 확인 git stash list
스태시 복원 git stash pop
병합 충돌 시 해결 후 커밋 충돌 해결 후 git add . → git commit
로그 보기 git log --oneline --graph --all

 

 

이번에 경험한 문제와 관련된 명령어

1. Pull 시 충돌 (로컬 변경사항 존재)

  • 에러 메시지: Your local changes to the following files would be overwritten by merge:
  • 해결방법:
    • git add . 후 커밋하거나
    • git stash로 잠시 보관한 뒤 git pull 실행

2. 원격 브랜치 머지 이후 main 뒤에 '2개 뒤' 라고 나오는 현상

  • 이는 로컬 main 브랜치가 최신 원격 main과 동기화되지 않아서 발생.
  • 해결방법:
    • main 브랜치 더블클릭 (checkout)
    • fetch 클릭으로 최신 커밋 가져오기
    • pull로 병합 후 최신 상태 유지

3. Merge Conflict

  • 충돌 시: 소스트리에서 충돌 파일 확인 후 직접 수정 -> 스테이징 -> 커밋 -> 푸시

프로젝트 클론 후 브랜치 생성, 작업, PR, 병합, 최신화 전체 과정

 

1.원격 저장소 클론

git clone [원격 저장소 URL]

 

2.새 브랜치 생성 및 이동

git checkout -b feature/내기능명

 

3.코드 작업 후 커밋

git add .
git commit -m "feat: 작업 내용 설명"

 

4.원격 브랜치 푸시

git push origin feature/내기능명
  1. GitHub에서 Pull Request(PR) 생성 후 리뷰 및 병합 요청
    • GitHub 페이지에서 PR 버튼 클릭 후 요청
  2. 관리자가 PR을 머지한 이후, 내 로컬 main 최신화
    • GitHub 페이지에서 PR 버튼 클릭 후 요청
git checkout main
  • 원격 최신 상태 패치
git fetch origin
  • 패치한 내용을 병합 (pull)
git pull origin main
  • 이제 내 main 브랜치가 최신 상태가 됨

    추가 작업 시 위 과정을 반복

커밋 타입 종류 및 작성 가이드

1. 주요 커밋 타입

타입설명언제 사용하는지 예시

feat 새로운 기능 추가 새로운 게시글 작성 기능, 댓글 작성 기능 추가 시
fix 버그 수정 버튼 클릭 시 오류 수정, 잘못된 렌더링 수정 시
docs 문서 수정 (코드 변경 없음) README, 주석 수정 등 문서 관련 업데이트 시
style 코드 포맷, 세미콜론 누락, 코드 스타일 변경 (논리 변경 없음) prettier 적용, 띄어쓰기/들여쓰기 수정
refactor 코드 리팩토링 (기능 변화 없이 구조 개선) 코드 최적화, 함수 분리 및 정리 시
test 테스트 코드 추가/수정 jest나 vitest 테스트 케이스 작성/수정 시
chore 빌드 작업, 패키지 매니저 설정, 기타 비기능성 작업 .gitignore 수정, npm 패키지 업데이트, 빌드 설정 변경 시
perf 성능 개선 렌더링 속도 개선, 불필요한 연산 최적화
ci CI 설정 및 스크립트 수정 GitHub Actions 수정, CI/CD 설정 변경
revert 이전 커밋 되돌리기 잘못된 커밋을 되돌려야 할 때 사용

2. 상황별 추천 커밋 타입

  • 코드 수정만 했다fix 또는 refactor (단순 수정 vs 구조 리팩토링)
  • 새로운 기능 개발을 했다feat
  • 문서나 주석을 수정했다docs
  • 스타일 수정만 했다 (세미콜론, 띄어쓰기 등)style
  • 빌드 및 패키지 관련 수정chore

3. 커밋 메시지 작성 템플릿

<type>: <간단한 설명>

(선택) 본문: 왜 이렇게 변경했는지 추가 설명
(선택) footer: 관련된 이슈 번호 등

예시:

feat: 게시글 작성 기능 구현

- PostForm.vue 작성 및 폼 검증 추가
- pinia store에 게시글 추가 메서드 연결

Closes #12
fix: 댓글이 등록되지 않는 문제 수정

- CommentForm.vue에서 onSubmit 메서드 수정
chore: .gitignore에 .nuxt 디렉토리 추가

필요하면 소스트리에서 자동으로 prefix 선택하는 방법도 알려줄 수 있으니 요청하면 설명해줄게!