Git

Git 기초

차돌박이츄베릅 2023. 5. 10. 12:56

Git은 버전관리툴

로컬저장소에 버전을 저장

 

준비

  1. Git 설치 
    git window 검색해서 설치하면 됨
    설치 시 기본 에디터가 Vim으로 설정되어 있으면 VSCode 에디터로 바꾸기
    기본 브랜치이름 main으로 입력
  2. VSCode 익스텐션에서 Git Graph 설치

 

작업 시작

  1. 폴더 생성
  2. VSCode에서 열기
  3. 터미널에서 git init

 

사용법

add, commit, diff(코드비교)는 VSCode기능 사용하는게 더 편함

  • git init : 로컬저장소를 생성하여 git을 사용할 수 있게 됨
  • git add (파일명확장자1 파일명확장자2 / . 입력시 전부) : 스테이징할 파일
  • git commit -m '메세지 내용'
  • git stauts : 상태창. 지금 변경된 파일과 스테이징된 파일 알려줌
  • git log --graph --all --oneline : 커밋 내역을 그래프로 보기

 

브랜치Branch

  • git branch 브랜치명 : 브랜치 생성
  • git switch 브랜치명 : 브랜치 이동
  • git merge 브랜치명 : 브랜치 합치기. main/master 브랜치로 이동한 뒤 merge.
    충돌 시 수정하고 git add, git commit 해주면 됨
  • git branch -d 브랜치이름 : merge 완료된 브랜치 삭제
  • git branch -D 브랜치이름 : merge 안한 브랜치 삭제

 


merge

합칠 브랜치에 각각 신규 commit이 1회 이상 있는 경우 3-way merge

새로운 브랜치에만 commit이 있고 기준 브랜치엔 신규 commit이 없는 경우 fast-forward merge

  1. 중심브랜치로 이동해서
  2. git merge 새로운브랜치명

 

rebase & merge

브랜치의 시작점을 main 브랜치 최근 commit으로 옮김. 강제로 fast-forward 하고 싶을 때 사용

  1. 새로운브랜치로 이동해서
  2. git rebase 중심브랜치명
  3. 중심브랜치로 이동해서
  4. git merge 새로운브랜치명

 

squash and merge

합쳐지는 브랜치의 commit 기록 안남음

  1. git switch main
  2. git merge --squash 브랜치명
  3. git commit -m '메세지'

 

기록을 남겨야하는 중요한 브랜치를 merge할 땐 3-way merge
기록을 남길 필요없는 쓸데없는 브랜치를 merge할 땐 squash, rebase 쓰면 됩니다. 

 

 

 


파일 복구하는 법

  • git restore 파일명 : 최근커밋
  • git restore --source 커밋아이디 파일명 : 커밋아이디 시점으로 해당파일 복구
  • git restore --staged 파일명 : 특정파일을 staging 취소

 

commit 취소하는 법

  • git revert 커밋아이디1 커밋아이디2
  • git revert HEAD : 방금생성한 최근커밋 취소가능

 

특정 커밋이 생성된 시점으로 모든걸 되돌리기

협업시엔 사용금지

  • git reset --hard 커밋아이디
  • git reset --soft 커밋아이디 : 변경사항을 지우지말고 staging해놓기
  • git reset --mixed 커밋아이디 : 변경사항이 staging되어 있지 않은 상태

 

코드 잠깐 다른 곳에 보관하기

주석처리한 내용을 commit 해버리기 싫을 때 git stash 쓰면 유용.
또는 기능 A, B를 만들어야하는데 기능A는 완성되었고 기능B는 반쯤 완성된 경우 기능B를 git stash하과 기능A만 commit-merge해주기.
간단히 브랜치만들어서 거기 보관하는 것도 나쁘지않음

  • git stash: 코드 잠깐 다른곳에 보관하기. 최근 commmit과의 차이점을 전부 보관해줌. staging 안해놓은 새로운 파일은 stash 안될 수도
  • git stash list: 보관된 코드 목록 조회
  • git stash save 'ccc라고 적음': 메모도 같이 적을 수 있음
  • git stash pop: 코드 다시 불러옴(가장 최근 것부터)
  • git stash drop 번호: stash 1개 삭제
  • git stash clear: 전부 삭제