>  기사  >  시스템 튜토리얼  >  git stash 데이터에서 데이터를 검색하는 방법을 가르쳐주세요.

git stash 데이터에서 데이터를 검색하는 방법을 가르쳐주세요.

PHPz
PHPz앞으로
2024-01-07 10:21:451142검색
소개 잘못된 git 명령으로 인해 그는 stash에 저장된 변경 사항을 삭제했습니다. 이 슬픈 사건이 있은 후 우리는 그가 한 일을 복원할 방법을 찾으려고 노력했고 해냈습니다! 먼저 경고합니다. 큰 기능을 구현할 때는 작은 단위로 나누고 정기적으로 커밋하세요. 헌신하지 않고 오랫동안 일하는 것은 좋은 습관이 아닙니다. 실수로 삭제된 변경 사항을 숨김(stash)에서 복구하는 방법을 살펴보겠습니다.
테스트 브랜치 만들기

제가 예로 사용한 저장소에는 아래와 같이 소스 파일 "main.c"가 하나만 있습니다.

教你找回 git stash 数据中的数据
여기에는 "초기 커밋"이라는 커밋이 하나만 있습니다.
教你找回 git stash 数据中的数据

이 파일의 첫 번째 버전은 다음과 같습니다.

教你找回 git stash 数据中的数据

파일에 몇 가지 코드를 작성하겠습니다. 이 예에서는 큰 변경을 할 필요가 없고, 단지 숨김 파일에 넣을 내용만 있으면 되므로 한 줄만 추가하겠습니다. "git diff"의 출력은 다음과 같습니다:
教你找回 git stash 数据中的数据

git stash의 오작동

이제 아직 내 변경 사항을 커밋하지 않고 원격 저장소에서 몇 가지 새로운 변경 사항을 가져오고 싶다고 가정해 보겠습니다. 그래서 먼저 그것을 숨기고 원격 웨어하우스의 변경 사항이 풀링될 때까지 기다린 다음 변경 사항을 메인 브랜치로 되돌리기로 결정했습니다. 변경 사항을 숨김으로 이동하기 위해 다음 명령을 실행했습니다.

으아아아

stash를 보려면 "git stash list" 명령을 사용하세요. 여기서 변경 사항을 볼 수 있습니다:

教你找回 git stash 数据中的数据

내 코드는 이미 안전한 장소에 있고 마스터 브랜치는 현재 깨끗합니다(git status 명령으로 확인). 이제 원격 저장소에서 변경 사항을 가져와 변경 사항을 마스터 브랜치로 되돌리기만 하면 됩니다. 이것이 제가 해야 할 일입니다.

하지만 명령을 잘못 실행했습니다.

으아아아

다음 명령을 실행하는 대신 숨김 파일을 제거했습니다.

으아아아

이 명령은 스택에서 제거하기 전에 숨김을 적용합니다. git stash list 명령을 다시 실행하면 변경 사항을 스택에서 마스터 브랜치로 되돌리지 않고 삭제한 것을 확인할 수 있습니다. 어머나! 다음에 무엇을할지?

git stash 데이터 검색

좋은 소식은 git이 내 변경 사항이 포함된 개체를 삭제하지 않고 해당 개체에 대한 참조만 제거했다는 것입니다. 이를 설명하기 위해 데이터베이스에 있는 개체의 연결과 유효성을 확인하는 git fsck 명령을 사용합니다. 저장소에서 git fsck를 수행한 후의 출력은 다음과 같습니다.
教你找回 git stash 数据中的数据

--unreachable 매개변수 덕분에 git-fsck가 도달할 수 없는 모든 개체를 표시하도록 만들었습니다. 보시다시피 접근 불가능한 객체가 없음을 보여줍니다. 그리고 숨김에서 변경 사항을 삭제하고 동일한 명령을 다시 실행했을 때 다른 결과가 나왔습니다.
教你找回 git stash 数据中的数据

이제 접근할 수 없는 개체가 세 개 있습니다. 그렇다면 내 잔돈은 어느 것입니까? 사실, 나는 모른다. git show 명령을 실행하여 모든 객체를 검색해야 합니다.

教你找回 git stash 数据中的数据

바로 그거야! ID 번호 95ccbd927ad4cd413ee2a28014c81454f4ede82c는 내 변경 사항에 해당합니다. 이제 누락된 변경 사항을 찾았으므로 복원할 수 있습니다. 한 가지 방법은 이 ID를 가져와 새 분기에 넣거나 직접 커밋하는 것입니다. 변경 객체의 ID 번호가 있으면 변경 사항을 마스터 분기로 되돌리는 최선의 방법을 결정할 수 있습니다. 이 예에서는 git stash를 사용하여 마스터 브랜치의 변경 사항을 되돌렸습니다.

으아아아

기억해야 할 또 다른 중요한 점은 git이 주기적으로 가비지 수집 프로그램(gc)을 실행한 후에는 git fsck를 사용하여 더 이상 액세스할 수 없는 개체를 볼 수 없다는 것입니다.

위 내용은 git stash 데이터에서 데이터를 검색하는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 linuxprobe.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제