깃 (git) '와' 팝 '비밀창고' 비밀창고 내가 자주 사용하는 저장 및 리스토어할 내 apc® 진단트리 변경되는지 깃 (git) 나는 어제 약간의 변화가 있었다 "며" 그때 내가 갖고 있는 숨겨진 내 apc® 진단트리는 및 뛰어오름, 더 많은 변화가 내 apc® 진단트리 # 39, d, s # 39 와 같은 i& 되돌아가 검토 '팝' 비밀창고 yesterday& 숨겨진 변경되지만 깃 (git) 가 연결된 모든 참조에는 지루려면 커밋합니다.
내가 알고 있는 '비밀창고' 를 사용하고 있는 깃 (git) 을 만드는 데 사용되는 커밋합니다 어졌다면 .git/refs/stash map_layer 참조가 비밀창고. 및 .git/logs/refs/stash map_layer 전체 비밀창고. 그러나 그 후 '팝' 비밀창고 참조에는 깃 (git) 다. 것으로 알고 있지만, 여전히 내 리포지토리를 커밋합니다 어딘가에 내가 무슨 말을 했는지 don& # 39 수 있을지 알 수 없다.
참고로, 저는 오늘 중요한 가져다줄래요 t # 39 이 isn& 때문에 매일 백업본과 yesterday& # 39 의 apc® 진단트리는 afaq 내 변경으로부터 돌아갈 수 있습니다. # 39 m, 묻지 않을 수 없기 때문에 쉽게 i& 합니다!
해시 비밀창고 알고 나면, 이를 숨기기 떨어트림 커밋합니다 적용할 수 있습니다.
git stash apply $stash_hash
또는 통해 it 를 위한 별도의 분기로의 만들 수 있습니다.
git branch recovered $stash_hash
그 후, 보유하고 있는 모든 일반 툴과도 수 있습니다. 그냥 폭파시켜 분기로의 작업을 마친 후 떠났다.
단지 지금 막 뛰어오름 it 와 터미널 열려 있으면 됩니다 [아직 비밀창고 '팝' 에 의해 인쇄했습니다 깃 (git) 해시 값을 화면] [1] (고마워요, 돌다).
그렇지 않으면 linux용 bsbab-unix 또는 Git Bash windows용, 이를 통해 확인할 수 있습니다.
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
이어 Powershell 사용하여 Windows 용:
git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2];}
이렇게 하면 더 이상 보여줄 수 있는 모든 커밋한 dell. 팁을 그래프화합니다 커밋합니다 지사급 또는 태그 등 어디서나 referenced - 모든 손실됩니다 로칼에서 작성한 적이 될 수 있는 모든 비밀창고 커밋합니다, 어디선가 그래프화합니다.
찾을 수 있는 가장 쉬운 방법은 원하는 것은 아마 '비밀창고 커밋합니다 전달하십시오 목록을 지스크':
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
이어 지켜보리니 [이 답을 엠레긴스] (https://stackoverflow.com/questions/89332 # 34666995) 를 사용하는 경우 Powershell windows*용.
이렇게 하면 모든 단일 저장소에서의 커밋합니다 판매업체에서 , 실행하십시오 리포지토리를 너회가 보여주는 브라우저 관계없이 방관하겠나 접속할 수 있습니다.
깃 (git) '와 같은 일이 있을 수 있습니다' - - - 굈 '지스크 로깅합니다 그래프화합니다 오넬 강 원할 경우 별도의 gui 를 통해 콘솔에 그래프화합니다 장식하는' 좋은 app.
이 형식의 메시지를 별색 숨기기 위해 커밋한 증대하고자 찾습니다.
&, # 160; &, # 160; &, # 160; &, # 160; ,, /I> wip 켜짐이 < i> somebranch<. 어떤 오래된 커밋합니다 /i> message< 쿠마리타슈 i> <;;;
[1]: # 7844566 https://stackoverflow.com/questions/89332/recover-dropped-stash-in-git/7844566
$ git stash pop
[...]
Dropped refs/stash@{0} (2ca03e22256be97f9e40f08e6d6773c7d41dbfd1)
참고로, '비밀창고' 어스름한 드롭합니다 git 같은 할말이다)
깃 (git) 을 얻을 수 있는 ',', 그리고 tmp 2cae03e 뒤로를 비밀창고 도망쳐야해 분기로의 you& # 39, ll 이해했소 분기로. 이 변환하십시오 숨기기 위해 실행하십시오:
git stash apply tmp
git stash
또한 분기로의 자유롭게 조작할 수 있다는 것이 아니라, 예를 들어, 체리 선택 정보기술 (it) 또는 병합해야 거잖나.
이 외에도 수락됨 솔루션이므로 하라님의 싶었죠. # 39, 그 즉시 명백하네 다는일은 내가 처음 시도한 wasn& t 이 방법 (어쩌면 그동안 한다) 에서 사용할 수 있지만, git, 그냥 비밀창고 적용하십시오 해시 값을 " < 적용하십시오 hash> " 숨기기,,:
$ git stash apply ad38abbf76e26c803b27a6079348192d32f52219
내가 어렸을 때, git, 이 새로운 wasn& t # 39 는 깃 (git) 하고, 여러 조합을 다는일은, 쉐퍼드도 선택해제합니다 " show";;;;, git apply" " " patch" 상술합니다.
여전히 저장소의 숨겨 놨다 목록을 가져올 수 있지만, 더 이상 연결할 수 없습니다.
git fsck --unreachable | grep commit | cut -d" " -f3 | xargs git log --merges --no-walk --grep=WIP
제목을 바꾸고, 제공했음 경우 데이터베이스에구성원을 비밀창고 " WIP"; '말' 의 일부를 가지고 그렙 = wip 명령 '홍보' = 테셀라티온 그렙. (예:
이 명령은 대한 WIP" 그레핑 "; 때문에 '는 메시지를 커밋합니다 숨기기 위한 기본 형식으로 WIP 켜짐이 마이브란치: [이전 커밋합니다 해시라고] 메시지 이전 커밋합니다. '
난 그냥 내 손실됩니다 비밀창고 커밋합니다 나를 찾을 수 있도록 만든 명령입니다.
for ref in `find .git/objects | sed -e 's#.git/objects/##' | grep / | tr -d /`; do if [ `git cat-file -t $ref` = "commit" ]; then git show --summary $ref; fi; done | less
이 유형의 않는비즈니스 수준들과 있는 모든 개체는 열거합니다 .git/objects 트리에서만 커밋합니다 요약이 각각 관심용 찾습니다. 이 곳에서 찾을 수 있는 것은, 그냥 통해 적절한 " 커밋한 WIP 작업: 6a9bb2". (" work"; 내 분기로의 619bb2,) 는 최근 커밋합니다).
내가 만일 내가 사용하는 " git 비밀창고 apply"; 깃 (git) 대신 비밀창고 pop" "; 난 내가 사용하는 경우, 깃 (git) 이 문제가 wouldn& # 39, t , message*&quo 비밀창고 절약합니다 ". 그런 다음 커밋합니다 찾을 수 있을 수 있습니다.
업데이트: # 39 의 Nathan& 함께 이 짧은 생각 됩니다.
for ref in `git fsck --unreachable | grep commit | cut -d' ' -f3`; do git show --summary $ref; done | less
스케쳐내 레스타시 숨기기 위해 한 손실됩니다 해시 너회의 손실됩니다 비밀창고 먼저 찾아야 합니다.
깃 (git) '로' 아리스토텔레스 파갈치스 fsck 를 제시한 데 도움이 됩니다.
개인적으로 '내' 를 사용하고 있는 모든 커밋합니다 모두 로깅할 앨리어스가 show me (커밋한 복구할 수 있는) 에 더 나은 보기입니다 상황:
git log --graph --decorate --pretty=oneline --abbrev-commit --all $(git fsck --no-reflogs | grep commit | cut -d' ' -f3)
일단 알고 sha1 변경하십시오 세로그 숨기기 위해 이전 비밀창고 추가 됩니다.
git update-ref refs/stash ed6721d
git update-ref -m "$(git log -1 --pretty=format:'%s' ed6721d)" refs/stash ed6721d
restash = !git update-ref -m $(git log -1 --pretty=format:'%s' $1) refs/stash $1
대신 난 당시 커밋한 DIFF 파일을 검토 및 출력입니다 허상 코드를 수정하여 내 코드 편집기이다.
git show $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' ) > ~/stash_recovery.diff
이제 결과 차등 / 로드하는 동안 txt 파일 () 는 가정에서 폴더) 를 txt 편집기에는 사 및 결과 실제 코드를 봅니다.
그럼 됩니다
git stash apply ad38abbf76e26c803b27a6079348192d32f52219
사람들은 왜 이 질문을? 아직 잘 알고 있기 때문에, 또는 t # 39 don& 세로그.
이 물음에 대한 열거하십시오 옵션과 함께 가장 긴 명령의세 거의 아무도 기억해. 그래서 사람들은 이 질문과 맺을 필요가 있다고 생각하는 및 집어쳐요 있는모든, 복사, 붙여넣기 후 거의 즉시.
난 그냥 모든 것을 확인할 수 있는 이 질문은 세로그 (git 세로그), 더 이상 바랄 것이 별로 없다. 한 번 확인할 수 있는 모든 이거보여 목록니다 커밋한 100 가지 you& 커밋합니다 # 39 에서 체리 선택 및 정보기술 (it), re 만들거나 분기로의 찾고 있습니다. 이 과정에서 you& # 39, ll 배운 유용한 다양한 옵션을 세로그 대한 기본적인 git 명령의세.
깃 (git) 와 osx 의 v2.6.4, 내가 실수로 도망쳐야해 git 비밀창고 드롭합니다 어졌다면 찾았어 이동하여 다음 단계를 해구
알고 있다면 사용할 숨기기 이름:
"'$ git fsck - 접속 불가 그렙 커밋합니다 잘라냅니다 - c 20 - xargs git 그렙 2gb/s < stash> 이름 표시 - b 6 -;;"'
그렇지 않으면 결과에 의해 발견하리니 id 를 사용하여 수동으로:
"'깃 (git) - - - c $20 수 없는 fsck 그렙 커밋합니다 잘라냅니다 xargs git show"'
깃 (git)} {커밋합니다 id 비밀창고 적용하십시오 커밋합니다 id 찾을 때 단순화표현 그냥 등장
따라서 누군가 빨리 희망을
I want to add to the 수락됨 솔루션을 통해 다른 좋은 길을 갈 때 모든 변화에도 불구하고, 또는 어떤 X 에 사용할 수 없는 인컨텍스트 don& # 39 지스크 출력입니다.
git fsck --no-reflog | awk '/dangling commit/ {print $3}' > tmp_commits
for h in `cat tmp_commits`; do git show $h | less; done
그 후 해시 시됩니다 줄줄이 차이점 모두 사용할 수 있습니다. # 39, & # 39 누름에 q&. afaq 다음 차이점.
내가 모든 질문에 대한 답변을 couldn& # 39, t get to work on Windows 의 간단한 명령을 윈도우 (Windows 7 내 경우). '있다', '인정' 와 ',' t # 39 그렙 구체화하십시오 선택합니다. weren& 명령의세. 그래서 다른 방법을 찾았다.
모습이 될 것입니다.
"'cmd / k git 8506d235f935b92df65d58e7d75e9441220537a4 보이기 시작 cmd / k git 44078733e1b36962571019126243782421fcd8ae 보이기 시작 cmd / k git ec09069ec893db4ec1901f94eefc8dc606b1dbf1 보이기 시작 깃 (git) "'cmd / k d00aab9198e8b81d052d90720165e48b287c302e 보이기 시작
하지만 가져다줄래요 협력했습니다 최상의 솔루션이 될 수 없습니다.
아리스토텔레스 보일 수 있는 등 모든 수락됨 의해 오토메이티드 같은 비사양 비밀창고 커밋한 커밋한. 필터링하려면 아웃해야 소음입니다:
git fsck --no-reflog | \
awk '/dangling commit/ {print $3}' | \
xargs git log --no-walk --format="%H" \
--grep="WIP on" --min-parents=3 --max-parents=3
이렇게 하면 있는 only include 커밋한 정확히 3 (할 수 있는 비밀창고), 그 메시지에는 모피쳐 커밋한 WIP on" ";).
적용부 점을 감안, 저장한 비밀창고 메시지와 함께 있는 경우 (예를 들어, '내' 비밀창고 " 절약합니다 깃 (git), 새로 만든 stash") 이 오버라이드합니다 기본값입니다 " WIP on."; 메시지.
예를 들어 각 로칼에서 표시하십시오 대한 자세한 정보를 표시할 수 있습니다 '쇼' 비밀창고 迈向 전달하십시오 커밋합니다 메시지, 깃 (git):
git fsck --no-reflog | \
awk '/dangling commit/ {print $3}' | \
xargs git log --no-walk --format="%H" \
--grep="WIP on" --min-parents=3 --max-parents=3 | \
xargs -n1 -I '{}' bash -c "\
git log -1 --format=medium --color=always '{}'; echo; \
git stash show --color=always '{}'; echo; echo" | \
less -R
제가 제일 좋아하는 로만스였나 한 줄 광고문:
git log --oneline $( git fsck --no-reflogs | awk '/dangling commit/ {print $3}' )
이것은 기본적으로 동일한 개념을 활용하고 [이 오토메이티드] (https://stackoverflow.com/a/6455586/2311167) 이지만 훨씬 짧은. 물론 여전히 '' to get a 트리와 같은 디스플레이 추가 그래프 수 있습니다.
이 목록에서 찾을 수 있을 때 함께 적용하십시오 커밋합니다
git stash apply THE_COMMIT_HASH_FOUND
하지만 '비밀창고', '나를 위해 사용하는 세르고스 없습니다. 아니하였으매 손실됩니다 엔트리여야 연결할 수 없습니다. 밝히지 않았다.' (as 발견된 다른 많은 답변)
깃 (git) 에서 이 때 실행하십시오 bash) 는 windows.
크레딧. 위의 명령은 대한 자세한 내용은 https://gist.github.com/joseluisq/7f0f1402f05c45bac10814a9e38f81bf 에서 발췌
내가 여기 와서 다시 찾는 방법은 실제로 내려받습니다 비밀창고 상관없이 내앞에 체크아웃된. 특히 제가 뭔가 숨겨진 한 후, 이전 버전을 체크아웃된 어졌다면 교황드 정보기술 (it) 는 이에 앞서 있지만, 그 때 그 시점을 비밀창고 op 없습니다. 비밀창고 사라졌다. # 39 't just do it, i couldn& 비밀창고' back on the git 푸시할 스택할. 이 협력했습니다 가져다줄래요:
$ git checkout somethingOld
$ git stash pop
...
nothing added to commit but untracked files present (use "git add" to track)
Dropped refs/stash@{0} (27f6bd8ba3c4a34f134e12fe69bf69c192f71179)
$ git checkout 27f6bd8ba3c
$ git reset HEAD^ # Make the working tree differ from the parent.
$ git stash # Put the stash back in the stack.
Saved working directory and index state WIP on (no branch): c2be516 Some message.
HEAD is now at c2be516 Some message.
$ git checkout somethingOld # Now we are back where we were.
돌이켜보면 내가 '비밀창고' 팝 '비밀창고' 깃 없는 적용하십시오 깃 (git) 을 이용해 왔습니다. 제가 하고 싶은 건 정말 패치합니다 양분하다 '와' 조금 '단계' 양분하다 수명주기의 모든 적용하십시오 했다. 이제 I& # 39 m, 이렇게 하면:
$ git reset --hard; git bisect good; git stash apply
$ # Run tests
$ git reset --hard; git bisect bad; git stash apply
etc.
그 다음 단계를 사용하여 회복했다.
모든 지스크 - $ (& # 39; / 허상 commit/ 인쇄하십시오 fsck - 세로그 없습니다. awk 깃 (git) {} & # 39 3 달러. )
git stash_hash_code 체리 선택 - m $1
git 메리 토르
또한 사용하고 있는 경우 메시지를 커밋합니다 게릿 문제가 될 수 있습니다. 제발 숨기기 전에 변경 사항을 다음 대안.
[1]: # 91795 http://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git/91795