🌿 상태 이동 및 커밋
git status
git add (파일이름) / .
git commit -m "FIRST COMMIT"
git commit -am "(메시지)"
git commit -am "(메시지)"; git push
🌿 checkout으로 커밋 이동해보기
git checkout HEAD^^ // 두 단계 이전
git checkout (해쉬명)
git checkout - // 한 단계 되돌리기
🌿 stage -> working dir
git restore --staged (파일명)
🌿 같은 파일 부분만 커밋
git add -p
git commit -v
> 옵션 설명을 보려면 ?입력 후 엔터
> y 또는 n로 각 헝크 선택
> 일부만 스테이징하고 진행해보기
> git stats와 소스트리로 확인
> j, k로 스크롤하며 내용 확인
> git diff --staged와 비교
> 커밋 후 남은 헝크를 다른 버전으로 커밋해보기
🌿 마지막 커밋에 변화 추가
❗️ 변경 추가하고 스테이지
git commit --amend
❗️ 커밋 메시지 변경
🌿 마지막 커밋 메시지 한 줄로 변경
git commit --amend -m (새 메시지)
🌿 과거 커밋 수정/변경/삭제
git rebase -i
명령어 | 설명 |
---|---|
p | pick 커밋 그대로 두기 |
r | reword 커밋 메시지 변경 |
e | edit 수정을 위해 정지 |
d | drop 커밋 삭제 |
s | squash 이전 커밋에 합치기 |
git rebase HEAD~[거슬러 올라가고 싶은 커밋 수] -i
git rebase HEAD~1 -i // 예를 들어, 바로 전 커밋의 메세지를 재작성하길 원한다면
화면에 나오는 pick -> reword로 변경 (i키 누르면 입력가능)
:wq로 편집기를 빠져나옴
reword로 바꿨던 커밋들이 순서대로 나옴 메시지 수정
:wq로 저장
이미 push된 commit의 경우 처리
// github에 강제 push (내 원격저장소 내용으로 덮어쓰기 때문에 조심해야함)
git push -f
// 특정 브랜치에 올릴때
git push origin [브랜치명] -f
※ 주의사항: rebase로 커밋 내용을 바꿀경우 commit id와 시간이 달라짐. 직전에 올린 경우는 크게 문제가 되지 않지만 만약 5개전 커밋내용을 바꾼다고 했을때 1~5번까지 commit id와 시간이 바뀌기 때문에 다른사람들과 협업시에는 문제가 생길수 있음. 직전 커밋정도가 아니면 최대한 사용을 피하는게 좋음.
🌿 파일을 특정 커밋의 상태로 되돌리기
git restore --source=(헤드 또는 커밋 해시) 파일명
🌿 다른 브랜치의 원하는 커밋 가져오기
git cherry-pick (체리의 해시)
🌿 push 할 것이 있을 시 pull - 원격 먼저 push된 상태
원격 커밋 > 내 커밋
git pull --rebase
내 커밋 > 원격 커밋
git pull --no-rebase
🌿 원격 내용 로컬에 업데이트
git fetch
Reset : 이전 상태로 되돌림 (히스토리 삭제)
--soft: repository에서 staging area로 이동
--mixed (default): repository에서 working directory로 이동
--hard: 수정사항 완전히 삭제
🌿 특정 커밋 버전 이후 다 날림
git reset --hard (돌아갈 커밋 해시)
🌿 한단계 이전 상태로 돌림
git reset --soft HEAD^
🌿 몇 단계 이전 상태로 돌림
git reset --mixed HEAD^^^^
🌿 reset 취소
❗️ git reflog이용
git reset HEAD@{2} --hard
Revert 커밋에 반영된 부분 취소 개념 (히스토리 남김)
🌿 revert 로 과거의 커밋 되돌리기
git revert (되돌릴 커밋 해시)
🌿 커밋해버리지 않고 revert하기 - 원하는 다른 작업을 추가한 다음 함께 커밋
git revert --no-commit (되돌릴 커밋 해시)
두 브랜치를 한 커밋에 이어붙입니다.
브랜치 사용내역을 남길 필요가 있을 때 적합한 방식입니다.
🌿 merge
❗️ main 브랜치로 이동
git merge (branch 이름)
🌿 브랜치의 마디들을 하나로 묶어 main 브랜치로 가져오기
git merge --squash (대상 브랜치)
🌿 merge Fastforward말고 merge
Git merge —no —ff (브랜치명)
🌿 merge 취소
git reset -merge
🌿 merge 충돌 해결 -중단
git merge --abort
브랜치를 다른 브랜치에 이어붙입니다.
한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합합니다.
🌿 Rebase
❗️ 피쳐 브랜치로 이동
git rebase main
git merge (피쳐 브랜치명)
🌿 Rebase 취소
❗️ git reflog이용
git reset HEAD@{2} --hard
🌿 Rebase 충돌 해결 -중단
git rebase --abort
🌿 Rebase 충돌 해결 - 해결 가능 시
충돌이 모두 해결될 때까지 반복
충돌 부분을 수정한 뒤 git add .
git rebase --continue
🌿 브랜치1에서 파생된 브랜치2를 main 브랜치로 옮겨붙이기
git rebase --onto (도착 브랜치) (출발 브랜치) (이동할 브랜치)
git rebase --onto main 브랜치1 브랜치2
⚠️ checkout 명령어가 Git 2.23 버전부터 switch, restore로 분리
❗️ switch는 branch 이동 checkout은 commit 이동
🌿 branch 생성
git branch (branch 이름)
🌿 branch 이름 변경
git branch -m (기존 브랜치명) (새 브랜치명)
🌿 branch 목록 확인
git branch
git branch -r
git branch -a
🌿 branch로 이동
git switch (branch 이름)
git checkout (branch 이름)
🌿 branch 생성과 동시에 이동하기
git switch -c (branch 이름)
git checkout -b (branch 이름)
🌿 로컬에 같은 이름의 브랜치를 생성하여 연결하고 switch
git switch -t origin/from-remote
🌿 branch 삭제하기
git branch -d (branch 이름)
git branch -D (branch 이름) // 변경 내역 있는 경우
🌿 원격 branch 삭제하기
git push origin --delete (branch 이름)
🌿 치우기
git stash
🌿 살리기
git stash pop
🌿 메시지와 함께 스태시
git stash -m (메시지)
🌿 스태시 목록 보기
git stash list
🌿 생성되어있는 원격 레포 연결
git clone (원격 주소)
🌿 로컬에서 폴더 만들고 원격에 연결
❗️ GitHub 레포지토리 생성
git remote add origin (원격 저장소 주소)
git branch -M main
git push -u origin main
타입 | 설명 |
---|---|
feat | 새로운 기능 추가 |
fix | 버그 수정 |
docs | 문서 수정 |
style | 공백, 세미콜론 등 스타일 수정 |
refactor | 코드 리팩토링 |
perf | 성능 개선 |
test | 테스트 추가 |
chore | 빌드 과정 또는 보조 기능(문서 생성기능 등) 수정 |
🌿 변경사항 내 단어 검색
git log -S (검색어)
🌿 커밋 메시지로 검색
git log --grep (검색어)
🌿 명령어들과 설명
git help
git help -a
🌿 명령어 설명
git (명령어) -h
git help (명령어)