2017-10-05 1 views
0

비슷한 질문이 스택에 있지만 여기에 나와있는 정확한 상황을 해결하지 못한다고 말할 수 있습니다.git stash를 실행 취소하십시오. git pull을 사용하십시오.

실수로 git stash를 수행하여 상당한 양의 코드를 덮어 씁니다. 프로젝트 내 하위 디렉토리에서이 명령을 실행하여 동료가 코드를 추가하고 내 의도가 변경 사항 만 가져 오는 것이 었습니다. 그러나, 그것은 내가 개발하고 있던 하위 디렉토리의 이전 버전을 가져 왔고, 이제는 적어도 하루 이상 잃어 버렸습니다.

내 질문 : 거기에 내 로컬 파일로 되돌릴 수있는 방법이 있습니까? 내 변경 사항을 커밋하지 않았으므로 내 로컬 시스템에 있었던 것과 다른 작업 기록이 없습니다.

+1

변경 사항을 숨겼습니까? 그런 다음 변경 사항을 다시 받기 위해 은신처를 다시 적용하십시오. 물론 추가 작업을 수행하기 전에 로컬 저장소를 백업하십시오. – CodeCaster

답변

1

질문을 올바르게 읽은 경우 git pull을하기 전에 git stash을 수행했습니다. 숨겨 놓을 때, Git은 2 개 (때로는 3 개)의 커밋을 생성하여 작업 디렉토리와 스테이지 모두의 변경 사항을 처리합니다. stash는 이런 의미에서 일종의 완벽한 스냅 샷입니다.

리졸브를하지 않았지만 병합을 수행했다면 당겨 받기를 수행 할 때 분기 상단에 새로운 단일 병합 커밋이 있어야합니다. git log을 입력하고 검사하여이를 확인할 수 있습니다.

난 당신이 어디 있었는지에 당신을 얻을, 당신의 마리화나를 적용 한 후 나쁜 커밋 누킹 및 제안 :이 두 작업 디렉토리 무대로, 커밋 원본에 당신을 떠나야한다

git checkout yourBranch # assuming this happened on yourBranch 
git reset --hard HEAD~1 
git stash apply 

그들은 또한 그 상태에 있었다.

+0

나의 공황 상태에서 동료에게 물었다. 간단히 말해서, 'git stash apply'가 효과가 있다고 권고했다. 나는 이것이 더 나은 대답이라고 생각한다. – Sledge

+0

@Sledge 물론 어떤 시점에서라도 적용 할 수 있지만, 당겨 받기를 실제로 시도하지 않았다면 숨긴 부분을 적용하기 위해 _where_ (즉, 어느 커밋)의 추가 문제가 발생합니다. –

관련 문제