Git

JiMin LEE·2025년 4월 4일
0

TIL

목록 보기
1/9

구글링 그만하려고 작성하는 깃 정리본

Git 작업영역

Working Directory : 이력 관리 대상(tracked) 파일들이 위치하는 영역

✓ 지정된 디렉토리에서 .git 폴더를 제외한 공간
✓ 작업된 파일이나 코드가 저장되는 공간
✓ add 전 상태

Staging Area : 이력을 기록할, 다시 말해 commit할 대상 파일들이 위치하는 영역

✓ .git 폴더 하위에 파일형태로 존재(index)
✓ add 후 상태

Repository : 이력이 기록된(committed) 파일들이 위치하는 영역

✓ .git 폴더에 이력관리를 위한 모든 정보가 저장, 관리됨
✓ commit 후 상태

명령어 정리


git checkout

  • git checkout <브랜치 명> == git switch : 해당 브랜치로 작업영역 바뀐다.
    • ex) git checkout develop -> develop 브랜치로 작업영역 변경

  • git checkout <'commit id'> : 해당 커밋내역으로 작업영역 바뀐다.
    • ex) git checkout 81c183r -> commit id가 81c183r인 작업영역으로 바뀐다.
    • 해당 커밋에서 새로운 작업을 하고, 그 작업영역 그대로 새로운 브랜치로 만들고 싶다면 git branch "새로 만들 브랜치명" "commit id"

  • git checkout - : 최신 커밋으로 파일을 되돌린다.

: 현재 작업하는 브랜치의 최종 커밋을 가리키는 포인터


git commit

  • git commit -m"커밋 메세지"

  • git commit -am"커밋 메세지" : git add + git commit -m

  • git commit --amend : 커밋 수정하기
    ▪ 커밋 메시지를 수정하려면 ‘-m’ 옵션 사용
    ▪ 저자 정보 등을 수정하려면 ‘--author’ 옵션 사용
    ▪ 커밋 메시지를 수정하지 않으려면 ‘--no-edit’ 옵션 사용

git restore

  • git restore : 작업 디렉토리에서 변경된 파일을 되돌리는 데 사용 → 마지막 커밋 상태로 복원

  • git restore --staged
    ▪ staging area(스테이징 영역)에서 파일을 복원하는 데 사용
    ▪ 목적: 스테이징된 파일을 언스테이징하여 다시 커밋되지 않도록 설정
    ▪ 동작: 파일을 스테이징 영역에서만 복원하고, 작업 디렉토리의 내용은 그대로 유지

git rm

  • git rm --cache : 스테이징 영역에서 파일을 제거할 때 사용
    • working directory에서 파일이 삭제되지 않는다.

  • git rm : staging area + working directory 둘다 삭제

  • 만약 실수로 git rm --cached가 아닌 git rm을 사용하여 파일이 삭제되었다면?
git restore --staged ttt.txt
git restore ttt.txt

branch

  • git branch "브랜치 명" : 브랜치 만들기
    • (main) -> git branch develop -> main에서 develop이라는 브랜치명을 가진 브랜치 만들기

  • git branch -d "브랜치 명" : 브랜치 삭제하기

  • git push -d origin "원격 브랜치 명" : github에 있는 원격브랜치 삭제

stash

  • git stash
    • 작업하던 중 아직 add하지 않은 상황에서, 다른 것을 먼저 처리하거나 다른 브랜치로 이동할 때, 지금까지 작업하던 것을 임시저장 -> stack 형식

  • git stash save "label 명" : 헷갈리지 않게 라벨을 지정해서 임시저장할 수 있음

  • git stash pop : 임시저장해 놓은 작업물 다시 working directory에 가져오기
    • 가장 나중에 저장한 것 먼저 나온다 -> STACK(FILO)

  • git stash apply "stash 번호"
    • Ex) git stash pop stash@{2} -> 3번째(index가 2)로 저장한 임시저장본 가져오기

  • git stash list : stash 목록 가져오기

  • git stash drop : 임시저장 본 삭제
    • stash pop 같은 경우, 적용하고 바로 해당 stash가 사라지지만,
      stash apply 같은 경우, 적용만 하고 사라지지 않는다.

  • git stash branch : 현재 작업중인 내역으로 새로운 브랜치 생성

clean

  • git clean : untracked 파일 삭제

  • git clean -n : 삭제할 목록만 확인, 실제로 삭제 X
    • .gitignore에 정의된 파일은 대상이 아님

  • git clean -d : ignore file외 untracked 파일 삭제(하위폴더포함)
    - git clean -di : 안전하게 interactive하게!
    - git clean -df : 강제로 삭제

  • git clean -x : ignore file 포함 모든 untracked 삭제
    • git clean -xi : 안전하게 interactive하게!
      - git clean -xf : 강제로 삭제

  • git clean -X : only ignore file만 삭제

merge

  • merge에는 총 3가지 방식이 있다.
    1. Merge
      1.1 Fast-Forward merge
      1.2. 3-Way merge
    2. Rebase
    3. Squash

1.1 Fast-Forward merge

  • 시간의 흐름대로 커밋된 내역을 병합

  • 충돌(conflict) 발생 없고 100% Auto-merge

  • merge 후 모든 commit이 복제


1.2 3-Way merge

  • 두 개 이상의 브랜치로 파생된 커밋을 병합

  • 충돌(conflict) 가능성 있음

  • 병합 메시지(merge commit) 존재


2. Rebase

  • 공통조상(base) 병합

  • 3-Way ⇒ Fast-Forward 화


Squash

  • 많은 커밋의 양이 생기는데 여러 개의 커밋을 하나로 합치는 기능을 말한다.

0개의 댓글