콘텐츠로 건너뛰기
GitTree
Git 가이드5분 읽음

삭제된 Git 스태시, 삭제된 브랜치 또는 손실된 커밋을 복구하는 방법

삭제된 숨김 또는 삭제된 브랜치가 영구적으로 사라지는 경우는 거의 없습니다. Git은 가비지 수집에서 커밋을 제거할 때까지 커밋을 유지합니다. reflog 또는 git fsck를 사용하여 해당 항목을 찾고, 무엇을 보유하고 있는지 확인하고, 너무 늦기 전에 다시 브랜치에 배치하세요.

작성자: Kodmora

GitTree 뒤에 있는 소프트웨어 하우스

업데이트됨
  • 보관함
  • 실행 취소 및 복구
이 페이지에서

스태시를 삭제하거나 브랜치를 삭제하면 Git은 커밋이 아닌 이름을 제거합니다. 커밋은 일반적으로 2주 이상 후 가비지 수집으로 정리될 때까지 리포지토리에 연결할 수 없는 개체로 유지됩니다. git reflog을 사용하여 reflog에서 삭제된 브랜치의 마지막 커밋을 찾고, git fsck --unreachable을 사용하여 삭제된 숨김을 찾고, git show를 사용하여 확인한 다음, git branch rescue <sha>을 사용하여 유지합니다.

이 가이드에서는 각 사례를 정확한 명령으로 다루고, Git이 손실된 작업을 유지하는 기간과 복구할 수 없는 작업을 설명하고, 모든 소스를 한 번에 검색하고 아무것도 확인하거나 재설정하지 않는 GitTree의 Lost & Found에서 동일한 복구를 보여줍니다. 분실물 보관소는 GitTree의 무료 요금제에 포함되어 있습니다. 재설정, 리베이스 또는 수정을 실행 취소하려면 git 재설정, 리베이스 및 커밋 실행 취소 방법을 대신 읽어보세요.

"잃어버린" Git 작업이 실제로 존재하는 곳

브랜치, 태그, 숨김 또는 HEAD가 커밋으로 연결될 때 커밋에 도달할 수 있습니다. 브랜치를 삭제하거나 스태시를 삭제하면 커밋에 연결할 수 없지만 .git/objects에는 남아 있습니다. 두 개의 레코드가 이를 찾는 데 도움이 됩니다. 각 분기와 HEAD가 이전에 가리키는 참조 로그와 git fsck이(가) 검색할 수 있는 객체 데이터베이스 자체입니다.

어떤 도구가 어떤 유형의 손실된 작업을 찾는지
당신이 잃어버린 것어디를 볼 것인가명령
체크아웃한 삭제된 브랜치HEAD의 리플로그git reflog
체크아웃한 적이 없는 삭제된 브랜치도달할 수 없는 커밋git fsck --unreachable
떨어뜨렸거나 지워진 보관함도달할 수 없는 병합 형태의 커밋git fsck --unreachable | grep commit
재설정 또는 리베이스 후 커밋이 손실됨브랜치의 재로그인git reflog show <branch>
커밋되거나 숨겨지지 않은 변경 사항Git 어디에도 없음Git에서 복구할 수 없습니다.

삭제된 분기 복구

Git은 브랜치를 삭제할 때(Deleted branch feature/login (was 3f2a9c1)) 브랜치의 마지막 커밋을 인쇄합니다. 해당 메시지가 사라진 경우 HEAD의 참조 로그에서 마지막으로 브랜치에 있었던 시간을 검색한 다음 해당 커밋에서 브랜치를 다시 생성하세요.

# find the last commit of the branch
git reflog | grep "feature/login"

# check what it holds
git show 3f2a9c1 --stat

# put the branch back
git branch feature/login 3f2a9c1

떨어진 보관함을 복구하세요

스태시는 일단 삭제되면 자체적인 리프로그를 가지지 않으므로 도달할 수 없는 커밋을 검색하세요. 스태시는 메시지가 WIP on 또는 On <branch>:로 시작하는 병합 형태의 커밋이므로 쉽게 필터링할 수 있습니다. 이것이 Git의 자체 숨김 문서에서 설명하는 방법입니다.

# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
  | xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"

# inspect a candidate
git stash show -p 7c1e0b4

# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4

git fsck --lost-found를 사용하여 모든 매달린 커밋을 찾으세요.

git fsck --lost-found는 매달린 커밋을 나열하고 각 커밋의 복사본을 해당 ID로 명명된 .git/lost-found/commit/에 씁니다. 찾고 있는 항목이 무엇인지 모를 때 사용하세요. 날짜와 메시지를 나열한 다음 원하는 항목에서 분기하세요.

git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0e

GitTree의 분실물 보관소를 통해 분실된 작품을 복구하세요

  1. 분실물 열기

    도구 → 분실물을 선택하거나 Alt+Shift+D 키를 누르세요. 시작 페이지에서 전체 창으로 열리며, 여기서는 검색하는 세 가지 소스(reflog, GitTree의 복구 참조 및 연결할 수 없는 개체)를 설명합니다.

  2. 지역 일자리 찾기

    접근할 수 없는 개체에 대한 심층 검사 포함을 선택하여 삭제된 숨김 파일도 찾은 다음 로컬 작업 찾기를 누릅니다. 발견된 작품에는 각 결과가 출처 및 공개 시점과 함께 나열되어 있습니다. 커밋, 메시지 또는 소스로 필터링하면 목록 범위가 좁아집니다.

  3. 보관하기 전에 검사하세요.

    결과 선택: 이 개체가 나타나는 이유에는 증거가 표시되고 메시지와 파일이 옆에 표시되며 각 파일은 해당 콘텐츠를 엽니다. 아무것도 체크아웃되거나 적용되지 않습니다.

  4. 나뭇가지에 걸어두세요

    이 커밋 유지에서 새 분기 이름을 입력하고 복구 분기 만들기를 누릅니다. 복구됨에는 브랜치가 나열됩니다. 그래프로 표시는 해당 항목으로 이동합니다. 체크아웃 및 작업 파일은 변경되지 않습니다.

GitTree의 분실물은 시작 페이지에서 열립니다. 로컬 작업을 찾기 전에 재로그, 복구 참조 및 선택적 심층 스캔이 가능합니다.
GitTree의 분실물은 시작 페이지에서 열립니다. 로컬 작업을 찾기 전에 재로그, 복구 참조 및 선택적 심층 스캔이 가능합니다.

Git이 손실된 커밋을 유지하는 기간

Git의 기본 만료 설정
환경기본값제어 대상
gc.reflogExpire90일여전히 도달 가능한 커밋에 대한 리프로그 항목
gc.reflogExpireUnreachable30일더 이상 도달할 수 없는 커밋에 대한 리프로그 항목
gc.pruneExpire2주삭제된 스태시와 같이 리프로그 항목이 없는 접근할 수 없는 객체

가비지 수집은 일부 명령 후에 자체적으로 실행되므로 이는 약속이 아닌 창입니다. 빨리 볼수록 더 많은 것을 찾을 수 있습니다. 팀원의 복제본이나 푸시된 분기와 같은 다른 곳의 복사본은 또 다른 안전망입니다. 즉, 손실된 작업은 컴퓨터에서만 존재합니다.

복구할 수 없는 것

  • git checkout -- <file> 또는 git restore로 삭제된 편집 내용과 같이 커밋되거나 숨겨지지 않은 변경 사항입니다.
  • -u로 만든 숨김 파일이 아닌 추적되지 않은 파일입니다.
  • 가비지 수집이 이미 정리되었음을 커밋합니다.
  • 다른 사람의 컴퓨터에만 존재했던 작업입니다.

다음 단계: 분실물 가이드는 모든 페이지와 버튼을 문서화하고, 이전 분기 팁 찾기는 리플로그 보기를 다루고, git stash 가이드는 적용, 팝 및 추적되지 않는 파일을 설명하므로 복구 빈도가 줄어듭니다.

자주 묻는 질문

삭제된 git stash를 복구할 수 있나요?

보통 그렇습니다. 삭제된 숨김은 가비지 수집으로 정리될 때까지 도달할 수 없는 커밋이 됩니다. git fsck --unreachable로 찾고, git stash show -p <sha>로 검사한 다음, git stash apply <sha> 또는 git branch <name> <sha>로 검사하세요.

Git에서 삭제된 브랜치를 어떻게 복구합니까?

git reflog에서 브랜치의 마지막 커밋(또는 삭제할 때 Git이 출력한 "was <sha>" 메시지)을 찾은 다음 git branch <name> <sha>를 실행하여 브랜치를 다시 되돌립니다.

매달린 커밋이란 무엇입니까?

브랜치, 태그, 숨김 또는 참조 항목이 가리키지 않는 커밋입니다. git fsck --lost-found는 이를 나열하고 검사할 수 있도록 .git/lost-found/commit/에 복사합니다.

git gc는 손실된 커밋을 삭제합니까?

예, 만료 설정보다 오래되면 기본적으로 참조 로그 항목 없이 연결할 수 없는 개체는 2주 후에 정리됩니다. 작업을 복구할 때까지 git gc 및 git prune을(를) 사용하지 마세요.

커밋하지 않은 변경 사항을 복구할 수 있나요?

Git에서 온 것이 아닙니다. 커밋되거나 숨겨진 작업만 개체 데이터베이스에 있습니다. 편집자의 로컬 기록이나 백업을 살펴보세요.

GitTree의 분실물 보관소는 무료인가요?

예. 분실물 보관소는 GitTree의 무료 요금제에 포함되어 있습니다. 로컬 저장소만 읽으며 변경되는 유일한 사항은 요청한 복구 분기입니다.

출처

다른 제품에 대한 주장은 2026년 11월 5일의 공식 페이지에서 확인되었습니다. 가격과 기능은 변경됩니다. 공급업체 페이지가 진실의 원천입니다.