"git reset --hard"를 통해 커밋되지 않은 변경 손실로부터 복구
않은 을 작업 ?git reset --hard HEAD
무슨 일입니까?
이전에 커밋된 변경의 경우(이 SO에서 응답):
$ git reflog show
4b6cf8e (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to origin/master
295f07d HEAD@{1}: pull: Merge made by the 'recursive' strategy.
7c49ec7 HEAD@{2}: commit: restore dependencies to the User model
fa57f59 HEAD@{3}: commit: restore dependencies to the Profile model
3431936 HEAD@{4}: commit (amend): restore admin
033f5c0 HEAD@{5}: commit: restore admin
ecd2c1d HEAD@{6}: commit: re-enable settings app
# assuming you want to get back to 7c49ec7 (restore dependencies to the User model)
$ git reset HEAD@{2}
하루를 돌려받았구나! :)
일반적으로 커밋되지 않은 변경은 되돌릴 수 없습니다.
변경 「 」git add
개체에서 할 수 있어야 수 )을 하십시오.그래서 복구할 경우git fsck --lost-found
를 알 수 (를 알 수 있습니다.).git/lost-found/
에서는, 「디렉토리」를 사용할 수 .git show <filename>
각 파일의 내용을 표시합니다.)
그렇지 않은 경우 다음과 같이 답할 수 있습니다. 백업을 확인하십시오.에디터/IDE는 /tmp 또는 C:\ 아래에 임시 복사본을 저장할 수 있습니다.TEMP 같은 거.[1]
git reset HEAD@{1}
그러면 이전 HEAD로 복원됩니다.
[1] vim (옵션)는 영속적인 실행 취소 저장, 이클립스 IDE는 로컬 이력을 저장합니다.이러한 기능을 사용하면 a**를 절약할 수 있습니다.
해서 도망쳤다git reset --hard
오늘 제 레포에 올렸습니다.이치노.git fsck --lost-found
되지 않은 에 썼습니다.<path to repo>/.git/lost-found/
있지 에, 「 」, 「 」, 「 」에 other
「 」의 디렉토리<path to repo>/.git/lost-found/
않은 볼 수 있습니다.git show <filename>
을 바꾸세요 블럽스입니다.
이 을 추가한 합니다(「」: 「」를 사용해 주세요).git add .
인덱스에 없는 파일은 손실됩니다.
커밋되지 않은 변경은 없지만 git에서 하드 리셋 후 이전에 커밋된 변경을 복구할 수 있습니다.
용도:
git reflog
커밋의 식별자를 취득합니다.다음으로 다음을 사용합니다.
git reset --hard <commit-id-retrieved-using-reflog>
이 속임수로 몇 번 목숨을 건졌어요.
여기서 reflog 문서를 찾을 수 있습니다.
저는 로컬 프로젝트를 진행하면서 GitHub으로 옮기고 싶었고 새로운 저장소를 만들었습니다..gitignore를 사용하여 이 모든 파일을 새 저장소에 추가하려고 하다가 실수로 잘못된 파일을 추가하고 지우려고 했습니다.
git reset --hard origin/master
그리고 나서 내 로컬 파일은 모두 삭제되었다. 왜냐하면 레포는 비어있기 때문이다.난 모든 게 사라진 줄 알았어.
이 방법은 효과가 있었습니다.
git reflog show
git reset HEAD@{1}
git push
IntelliJ와 같은 것을 사용하는 경우:
컨텍스트 메뉴에서 [Local History]를 선택하고 하위 메뉴에서 [Show History]
프로젝트 또는 폴더의 로컬 기록 보기에는 지난 며칠 동안 수행한 모든 작업이 표시됩니다.대화 상자 아래쪽의 작업 열에서 롤백할 작업을 선택하십시오. 따라서 대화 상자 위쪽에는 변경된 파일의 트리 보기가 표시됩니다.삭제된 파일만 복원하려는 경우 이후 수행된 다른 변경 사항에 관계없이 Lost 파일을 선택할 수 있습니다.트리 뷰에서 txt를 선택하고 Revert 버튼을 클릭합니다.
http://blog.jetbrains.com/idea/2008/01/using-local-history-to-restore-deleted-files/
이거 때문에 큰일 났다!
했어요.git reset --hard
편집자하고 있어 히스토리에서 할 수 .인텔리J의 역사입니다.이클립스도 똑같이 할 수 있을 거야
「」입니다.git reset --hard
커밋되지 않은 변경은 Git이 복구하는 방법 없이 버립니다(백업 시스템은 도움이 되지만 Git은 그렇지 않습니다).
, 의 actually, 의, 거, 거, 거, 거, actually, actually, actually, actually, actually, actually, actually, actually, actually.git reset --hard
좋은 생각입니다.대부분의 경우 동일한 작업을 수행할 수 있는 더 안전한 명령어가 있습니다.
않은 변경을 는, 「」를 합니다.
git stash
이이 「 」를 실행하면, 시간이 지나면 기한이 됩니다.이 변경은 실행 시 시간이 지나면 만료됩니다.git gc
이러한 한다면 99.9%는%가 이러한 변경이 불필요하다고 확신한다면,git stash
1%의경우에도 여전히 친구입니다.0.1%의 경우입니다.% 확실하다git stash
이 100%에는 측정 오차가 있기 때문에 아직 당신의 친구입니다;-).「 」를
HEAD
, 그 다음에 지금 있는 지점의 끝, 그 다음에'라고 합니다.git reset --keep
하면 '이렇게 하다'와 같은 을 합니다.git reset --hard
로컬 변경은 파기하지 않습니다.다
git stash && git reset --keep
네 친구잖아
에 쓰지 가르치다git reset --hard
언젠가 갚을 것이다.
이게 제가 변화를 잃으면 주로 하는 일이에요.
git reflog
git checkout <commit id> // now you are in where you want but you cannot push from detached branch to master
manually copy and paste changes from detached branch to master or working branch
git reset --hard HEAD // if needed
git add ... > git commit ... > git push ...
까지 수행한 합니다.git reset --soft dadada
저도 같은 문제에 부딪혀서 미칠 것 같았습니다.처음에는 프로젝트를 맡기고 합병했습니다.에 실행하려고 git push --set-upstream origin master
하고 있었습니다.
fatal: refusing to merge unrelated histories
뛰었습니다.git reset --hard HEAD
그리고 3주간의 프로젝트를 삭제했지만, 다음 몇 가지 명령어를 사용하면 문제가 없어집니다.
git reset HEAD@{1} //this command unstage changes after reset
git fsck --lost-found //I got the dangling commit fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b
git show <dangling commit something like-> fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b>
git rebase fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b
IntelliJ에는 history 명령어를 사용하여 액세스할 수 있는 임시 폴더가 있습니다.
- 탐색 창에서 파일을 되돌릴 폴더를 선택하십시오.
- Shift 키를 두 번 누릅니다(Shift-Shift).
- 팝업되는 입력 상자에 Local History 라고 입력하고 Enter 키를 누릅니다.
- 기록 표시 선택
- 이제 필요한 버전으로 되돌릴 수 있습니다.
정보가 손실되었습니다.
커밋하지 않았기 때문에 .git에는 이 정보가 저장되지 않았습니다. 기본적으로는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★」git
복구할 수 없습니다.
하지만, 만약 당신이 그렇게 했다면git diff
는, 다음의 3개의 간단한 순서로 단말 출력을 사용해 회복할 수 있습니다.
- O.
git diff
. o/p.patch라는 파일에 o/ - 7개의 공백과 8개의 공백을 모두 탭(\t) 문자로 검색 및 교체하여 변경 내용을 저장합니다.
- repository에 접속합니다.diff.patch)를 합니다.
patch -p1 < diff.patch
)
주의: 단말기에서 파일로 데이터를 복사할 때는 데이터가 연속 출력이며 (위 화살표 및 아래 화살표 누름으로 인해) 중복 데이터가 포함되지 않았는지 주의하여 명확하게 확인하십시오.안 그러면 망칠 수도 있어요.
다른 에디터에서 같은 파일을 열고 있는 경우(예:Sublime Text)에서 Ctrl+Z를 눌러보세요.그게 날 구했어..
커밋되지 않은 파일들은 모두 이 파일보다 먼저git reset --hard <commit>
history에서 됩니다.하지만그, 한 코드 에디터, 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터, 코드 에디터 등입니다. 그래서 간단한 걸 발견했죠.control + z
영향을 받은 각 파일의 파일 상태를 Git 이전 버전으로 되돌리기 때문에 특별히 요청하지 않은 모든 파일을 리셋할 수 있습니다. Hooray!!
(사용자의 서브셋에 적합한 답변)
MacOS를 사용하는 경우, Time Machine 디스크를 사용하지 않더라도 OS는 로컬 스냅샷이라고 하는 시간별 백업을 저장합니다.
Time Machine을 입력하고 잃어버린 파일로 이동합니다.OS는 다음과 같이 질문합니다.
The location to which you're restoring "file.ext" already contains an
item with the same name. Do you want to replace it with the one you're
restoring?
잃어버린 파일을 복구할 수 있습니다.
일정하지 않은 변경 및 커밋되지 않은 변경을 손실한 VSCode 사용자용
이 작업은 재설정 후 파일을 다시 광범위하게 편집하지 않은 경우에만 작동합니다.
tl;dr VSCode에서 파일 변경 취소 시도
git reset —-hard
후에 을 바꿨다.같은 주주들은 한 시간 후에 마음을 바꿨다.
나는 잠시 쉬었다가 돌아왔다.그들이 마음을 바꾼 것을 보고 나서, 나는 내가 작업하고 있던 파일을 원래대로 되돌리기로 결심했고, 효과가 있었다!나는 간신히 모든 일을 되찾았다.
Netbeans에서 개발하는 경우 파일 탭과 파일 편집 영역 사이를 확인합니다."출처"와 "이력"이 있습니다."내역"에서 버전 제어(git/other)를 사용하여 변경한 내용과 로컬에서 변경한 내용을 볼 수 있습니다.이 경우 로컬 변경으로 인해 구제가 될 수 있습니다.
단계적단계적)으로만할 수 .git add
( )는, 유실된 변경을 실시합니다.
이 명령을 실행하면 쉽게 복구할 수 있습니다.
순서 1 프로젝트 루트 디렉토리로 이동한 후 이 명령을 실행합니다.
npx git-recover
순서: 2 회복 디렉토리 경로를 다음과 같이 입력합니다.
/Users/apple/RecoveryDirectory
Recovery Directory에서 파일이 손실됩니다.
음, 내가 아는 한 가장 좋은 해결책은 IDE 기능을 사용하는 것입니다.
- 파일을 잃어버린 저장소를 선택하고 마우스 오른쪽 버튼으로 클릭합니다.
- 메뉴에서 로컬 이력에 대해 찾기> show history
- 버전 체크인을 합니다.you all files exists > 그것을 선택하고 revert를 클릭합니다.대부분의 경우 이상입니다.
메모: 위의 솔루션은 변경 중이거나 intelliJ 등의 IDE에서 저장소를 Import 했을 때 작동합니다.
하드 리셋을 하고 싶지 않은 경우 잃어버린 커밋을 새 브랜치로 복구할 수 있습니다.
첫 번째:
git reflog
복구할 커밋을 찾습니다.잃어버리기 전에 약속만 하면 바로 맨 위에 있을 거예요.찾으려면 아래로 스크롤해야 할 수도 있습니다(Enter 또는 PageDown을 누릅니다).HEAD 번호를 적어 두고 57을 교체합니다.
git checkout HEAD@{57}
회복된 커밋을 사용하여 새 브랜치를 만듭니다.
git checkout -b recovery_branch
그런 다음 개발 브랜치로 커밋을 선택하거나 원하는 대로 할 수 있습니다.
나중에 VSCode를 확장: GitLens - Git supercharge와 함께 사용할 수 있으므로 이 확장으로 코드를 되돌릴 수 있습니다.
로컬 변경을 커밋하거나 저장하지 않고 체크아웃하는 시나리오가 발생했습니다.내가 아는 한 어떤 명령도 날 도울 수 없어.나한테 효과가 있었던 건 CTRL+Z였어.
CTRL + Z
우연히 모든 파일이 에디터에서 열렸기 때문에 에디터에서 필요한 파일의 CTRL+Z를 누르면 문제가 해결되었습니다.
PS: Sublime 텍스트 에디터를 사용하고 있었습니다.
언급URL : https://stackoverflow.com/questions/5788037/recover-from-losing-uncommitted-changes-by-git-reset-hard
'IT' 카테고리의 다른 글
위 행에서 현재 행으로 값 반환 (0) | 2023.04.18 |
---|---|
Nodejs를 사용하여 Excel 파일을 작성하는 방법 (0) | 2023.04.18 |
VBA를 사용하여 Excel에서 워크시트 삭제 (0) | 2023.04.18 |
Retina 디스플레이 검출 (0) | 2023.04.18 |
UILabel의 NSAttributedString에 탭 가능한 "링크"를 작성하시겠습니까? (0) | 2023.04.18 |