Git
Git 기초
차돌박이츄베릅
2023. 5. 10. 12:56
Git은 버전관리툴
로컬저장소에 버전을 저장
준비
- Git 설치
git window 검색해서 설치하면 됨
설치 시 기본 에디터가 Vim으로 설정되어 있으면 VSCode 에디터로 바꾸기
기본 브랜치이름 main으로 입력 - VSCode 익스텐션에서 Git Graph 설치
작업 시작
- 폴더 생성
- VSCode에서 열기
- 터미널에서 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됨
- 중심브랜치로 이동해서
- git merge 새로운브랜치명
rebase & merge
브랜치의 시작점을 main 브랜치 최근 commit으로 옮김. 강제로 fast-forward 하고 싶을 때 사용
- 새로운브랜치로 이동해서
- git rebase 중심브랜치명
- 중심브랜치로 이동해서
- git merge 새로운브랜치명
squash and merge
합쳐지는 브랜치의 commit 기록 안남음
- git switch main
- git merge --squash 브랜치명
- 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: 전부 삭제