반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

웹풀스택 공부 중

Git 파일 관리 본문

웹개발/웹 개념

Git 파일 관리

lukeit 2024. 9. 3. 09:54

Git 명령어 정리

파일 관리

  • git add <file_name>: 변경된 파일 하나만 Staging Area로 추가합니다.
  • git add .: 모든 파일 변경 사항을 한번에 Staging Area로 추가합니다.
  • git add -p: 파일을 세부적으로 hunk 단위로 나눠서 Staging Area로 추가할 수 있습니다.
    • y (yes): 현재 보고 있는 hunk를 add합니다.
    • n (no): 현재 보고 있는 hunk를 add하지 않습니다.
    • q (quit): add(staging) 과정을 종료합니다.
    • s (split): 현재 hunk를 더 작은 단위로 나눕니다.
    • e (edit): 현재 hunk를 직접 편집합니다 (비추천).
  • Hunk 조작 옵션:

파일 수정내용 임시 저장

  • git stash: 현재 git add를 통해 commit 대기 중인 모든 수정사항을 임시 저장소에 저장합니다.
  • git stash pop: 임시 저장된 것 중 가장 최신의 하나를 꺼내옵니다.
  • git stash list: 임시 저장된 항목들을 Stack 자료구조로 조회합니다.

Commit 생성 및 수정

  • git commit -am "message": git commit -agit commit -m "message"를 합친 명령어입니다. (Untracked 파일 제외)
  • git commit --amend: 앞선 커밋을 수정할 수 있습니다 (메시지나 내용 수정).

Commit 삭제 (롤백)

  • git reset HEAD~1: 현재 커밋을 Mixed 롤백합니다. 커밋했던 수정본을 커밋되지 않은 상태로 롤백할 수 있습니다.
  • git reset --hard HEAD~1: 현재 커밋을 Hard 롤백하여 모든 수정본을 삭제합니다.

Mixed vs Soft vs Hard

  • Mixed (기본 옵션):
    • 이후 git add가 필요합니다.
  • Soft:
    • git reset --soft HEAD~1
    • git add가 필요 없습니다.
  • Hard:
    • git reset --hard HEAD~1
    • 모든 변경사항을 삭제합니다.

Commit 지칭 방법

  • 절대 커밋 지칭 (Hash): 커밋의 고유한 해시 값으로 지칭 (예: 2cd27c427c904c6ec4d30ce28a633e4d5113245f).
  • 상대 커밋 지칭 (Relative Reference):
    • ~ (Tilde): N번째 조상을 지칭합니다. (수직 이동)
    • ^ (Caret): N번째 부모를 지칭합니다. (수평 이동, 잘 안 씀)
    • @ (At): Reflog를 통해 내가 직접 커밋한 히스토리를 기반으로 롤백합니다.
     

Rebase

  • git rebase -i HEAD~4:
    • -i (interactive): rebase할 때 필요한 옵션으로, 한 번에 여러 커밋을 수정할 수 있습니다.
    • 이후 reword로 여러 커밋 메시지를 변경할 수 있습니다.
    • edit 옵션을 사용해 vi로 커밋 내용을 수정한 후, git commit --amend로 커밋 메시지도 수정할 수 있습니다.
    Rebase 장점:
    • Cherry Picking: 원하는 커밋만 선택적으로 변경 가능합니다.
    • Merge Conflict 방지: 변수나 함수 이름 변경 시 연쇄적인 Merge Conflict를 방지할 수 있습니다.

Commit 조회

  • git log: 커밋 메시지 기반으로 조회합니다.
  • git show: 커밋 메시지와 상세 수정 내용을 함께 조회합니다.

Review

  • Staging Area: new file + modified + deleted
    • git commit 시 여기 있는 파일들이 Commit 된다
  • Unstaged: modified + deleted
    • 이 중에서 Commit 하고자 하는 것들을 git add를 통해 Staging Area로 올린다
  • Untracked: new file
    • 이 중에서 Commit 하고자 하는 것들을 git add를 통해 Staging Area로 올린다
      • Commit 하고 싶지 않은 파일은 .gitignore에 추가한다

Git Remove

  • git rm <file_name>: 명렁어로 삭제하기
    • Staging Area로 바로 올려 Commit시 삭제되도록 한다
  • git rm --cached <file_name>: 명령어로 삭제하기
    • Staging Area로 바로 올려 Commit시 삭제되도록 하며, Untracked에서 나만 볼 수 있다
      • Git Repo에서 삭제할 예정 (Staging) + Local에서 사용
        • Git 에서만 확실하게 없에고, 로컬에서는 사용하고 싶은 파일
          • ex.) .env

Reflog

  • 날려먹었을때 이전 작업을 원상복구 할 수 있다
  • git reflog: 이전에 내가 작업했던 커밋이나 브랜치로 이동이 가능하다
    • 수행하는 모든 커밋은 저장되어 어떤 문제가 발생해도 대응이 가능하다
반응형