Blog
Tools
GitHub

Git이란?

Git은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템임.
2005년에 리누스 토발즈 (opens in a new tab)님이 개발하심.
GNU (일반 공중 사용 허가서) 하에 배포되는 자유 소프트웨어 임.

Git 처음 Repo 등록

Github에서 처음 repo 생성하면 나오는거 그대로 따라하면 됨.

이후 Git commit

git add .
git commit -m "commit 메시지"
git push

commit 작성 룰

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정
  • style: 코드 스타일 변경 (코드 포매팅, 세미콜론 누락 등)
  • design: 사용자 UI 디자인 변경 (CSS 등)
  • test: 테스트 코드, 리팩토링 (Test Code)
  • refactor: 리팩토링 (Production Code)
  • build: 빌드 파일 수정
  • ci: CI 설정 파일 수정
  • perf: 성능 개선
  • chore: 빌드 업무 수정, 패키지 매니저 수정 (gitignore 수정 등)
  • rename: 파일 혹은 폴더명을 수정만 한 경우
  • remove: 파일을 삭제만 한 경우

알아두면 유용한 깃 명령어

저장하기

간혹 브랜치를 변경할 때 merge가 덜 됐다거나 commit이 안되서 변경이 안될 때가 있는데 이럴 때 사용하는 명령어이다. 또는 branch를 새로 만들지 않고 dev 브랜치에서 작업하다가 다른 브랜치로 이동해야 할 때도 사용한다.

  • git stash : 현재 변경사항을 임시로 저장
git add .
git stash 
  • git stash pop : 임시로 저장한 변경사항을 다시 불러옴

커밋 되돌리기

  • git reset . : git add 한 내용 되돌리기
git reset . 
  • git reset --soft [commit id] : commit id 시점으로 커밋만 되돌림(파일 변경사항 유지)

  • git reset --hard [commit id] : commit id 완전히 되돌리기 (파일 변경사항 제거)

브랜치

현재 내 브랜치 확인

git branch

브랜치 생성

브랜치 새로 만들면서 브랜치 변경
git switch -c [브랜치명] 

브랜치 전환

git switch [브랜치명]

원격 저장소의 브랜치

git branch -r 

브랜치 삭제

git branch -d [브랜치명]

git request Download(Pull 하기)

Merge가 안되고 open되어 있는 request가 local에서 날아갔으면 다음과 같이 다운받아주면 됨.

  • UserName : github ID
  • RepoName : Request가 있는 Repo 이름
  • 브랜치Name : Request를 생성한 브랜치 이름
git pull git@github.com:UserName/RepoName.git 브랜치Name
git switch 브랜치Name

실행 후 폴더에 가보면 해당 request에서 작성한 코드/파일들이 남아있음.

브랜치 전략

github flow에는 5가지 브랜치가 존재한다.

  1. master : 기준이 되는 브랜치로 제품을 배포하는 브랜치
  2. develop : 개발 브랜치로 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 Merge
  3. feature : 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치에 Merge
  4. release : 배포를 위해 master 브랜치로 보내기 전에 먼저 QA(품질검사)를 하기위한 브랜치
  5. hotfix : master 브랜치로 배포를 했는데 버그가 생겼을 떄 긴급 수정하는 브랜치

Reference

1인 워크 플로우 (opens in a new tab)
우아한형제들 기술블로그 (opens in a new tab)

코드 변경 이력 덮어쓰기

코드를 변경했는데 간혹 제대로 업로드가 되지 않는 경우, Git 저장소에 있는 코드를 내 로컬에 있는 코드로 덮어쓸 수 있음.