파일 조작

Park sang woo·2024년 1월 16일

4주차 Git, Github

목록 보기
4/4

📓 파일 조작

  • 파일 삭제 시나리오
    • deleted
      • git rm <file.txt> -> Staging Area
      • 디렉토리 혹은 VSCode에서 단순 파일 삭제 -> Unstaged

  • 파일 추가 시나리오
    • 디렉토리 혹은 VSCode에서 단순 파일 추가 -> Untracked
  • 파일 수정 시나리오
    • 디렉토리 혹은 VSCode에서 단순 파일 수정 -> Unstaged -> git add하면 Staging Area

🏷️ 파일 삭제 시나리오

Git이 추적하고 있는 파일 중 삭제
1. git rm <file.txt> : Git에서 파일을 삭제.
Staging Area로 바로 올려서 Commit 시 바로 삭제될 수 있도록 함.

  • Git Repository에서 삭제 예정 + Local에서 삭제.
  • Staging Area에 추가. -> Staging Area에 추가된 파일은 다음 커밋에서 해당 파일이 히스토리에서 완전히 제거되도록 함. (로컬과 원격 모두에서 삭제.)
  • commit을 해야 삭제됨. -> 스테이징 영역에 있는 변경 내용이 새로운 커밋으로 기록됨.

즉 Working Directory에 존재하는 해당 파일을 삭제 후 해당파일이 삭제됐다는 내용을 Staging Area에 등록하는 과정까지 함께 수행하게 된다. 따라서 git rm 명령 실행 후에는 반드시 git commit 명령어가 필요.


  1. git rm --cached <file.txt> : Staging Area 로 바로 올림과 동기에 Untracked 에 올려 나만 봄.

    • Git Repository 에서 삭제 예정(Staging) + Local 에서 사용.
    • History에서만 해당 파일을 제거. 로컬은 유지.
    • Staging Area에서만 해당 파일을 제거하므로 커밋을 만들어도 로컬 파일은 그대로 남아있음.
    • Untracked로 옮겨짐.

  1. 파일을 그냥 삭제하는 경우 (마우스 우클릭이든, 리눅스 명령어든)
    • Unstaged 에 올려 한번 검토 요청.
    • Git 에서만 확실하게 없애고, 내 로컬에서 나만 사용할 파일에 사용 -> 의미 :


🏷️ 파일 추가 시나리오

  • 파일을 그냥 추가하는 경우 : Git이 전혀 알지 못하는 새로운 파일이기 때문에 Untracked에 추가됨.

    • Untracked 내 이 파일을 나만 로컬에서 쓸건지 Git에 등록할 것인지 검토 필요.

    💧 나만 로컬에서 쓸 거면 -> Untracked 내 추가된 상태로 사용.
    (새로운 파일을 생성하면 그 파일은 Untracked 상태입니다. Untracked 파일은 Git이 해당 파일을 무시하고 추적하지 않는다.)

    💧 Git에 등록할 것이면 -> Staging Area로 전달. (git add로)


🏷️ 파일 수정 시나리오

Git을 통해 추적되고 있는 Tracked 파일에서 수정이 일어났을 때.

  • 파일 변경 내용은 Unstaged 상태에서 Commit 할 것들만 선택적으로 Staging Area 로 전달. 이러면 Git이 해당 파일을 추적 (git add)
  • Git이 해당 파일을 추적하도록 하고자 할 때.

Git add

어떤 곳에서든 Staging Area로 보낼 때 사용.






📓 Git restore

Staging Area 혹은 Unstaged 에서 빠꾸(복원) 시 사용.
Git에서 작업 디렉토리의 파일을 이전 커밋이나 Staging Area의 상태로 복원.

  • --staged 옵션이 있으면 : Staging Area 에서 빠꾸(복원). 그러면 git add 하기 전의 상태로 이동한다.

    • deleted (삭제할 파일) : Staging Area 에서 → Unstaged 로 이동
    • modified (수정된 파일) : Staging Area 에서 → Unstaged 로 이동
    • new file (추가된 파일) : Staging Area 에서 → Untracked 로 이동

  • --staged 없으면 : Unstaged 에서 빠꾸 (아무일도 없던것처럼 깨끗히 롤백 = 직전 Git 추적하던 상태로 롤백)

    • deleted (삭제할 파일) : Unstaged 에서 → 기존 Git 내 삭제되기 전 파일 존재 상태로 롤백

    • modified (수정된 파일) : Unstaged 에서 → 기존 Git 내 수정되기 전 파일상태로 롤백



🏷️ 그림 총 정리



다시 Stage/Unstage 정리

Staging Area : 커밋을 수행하기 전에 변경된 파일들을 일시적으로 모아두는 장소.
git add 사용하여 작업 디렉토리의 변경 사항을 Staging Area에 추가.


Unstaged : Working Directory에서 수정된 파일 중 Staging Area에 추가되지 않은 변경 내용.
파일을 수정하면 해당 파일은 Unstaged 가 됨. (현재 커밋에 포함 X.)
git status 로 어떤 파일이 Unstaged 상태인지 알 수 있음.

profile
일상의 인연에 감사하라. 기적은 의외로 가까운 곳에 있을지도 모른다.

0개의 댓글