답변:
git stash show
가장 최근 숨김 상태에서 변경된 파일이 표시됩니다. -p
diff를 표시하는 옵션을 추가 할 수 있습니다 .
git stash show -p
관심있는 숨김이 최신이 아닌 경우, 명령 끝에 숨김 이름을 추가하십시오.
git stash show -p stash@{2}
fatal: unable to create temp-file: Invalid argument
왜 그런지 알 수 있습니까?
git stash show -p stash@{0}
특정 숨김을 보는 데 사용 하십시오. 0은 마지막 톤을 나타내고 1은 마지막 톤을 나타냅니다 git stash list
.
git stash show -p 'stash@{0}'
)
git stash show -p stash@{0}> stash.txt
gitk
git repos를 시각화하는의 그래픽 UI의 팬입니다 . 다음으로 보관 된 마지막 항목을 볼 수 있습니다.
gitk stash
으로 나열된 모든 숨김 변경 사항보기를 사용할 수도 있습니다 git stash list
. 예를 들면 다음과 같습니다.
gitk stash@{2}
아래 스크린 샷에서 커밋 내역에서 왼쪽과 위쪽, 커밋 기록에서 언제 어디서 왔는지, 오른쪽 아래에서 수정 된 파일 목록 및 아래쪽의 줄별 차이로 숨김을 커밋으로 볼 수 있습니다 -왼쪽. 은신처가 여전히 숨겨져있는 동안.
stash@{X}
커맨드 라인에 여러 값을 제공 하여 한 번에 더 많은 결과를 볼 수는 있지만 gitk에서 '모든 숨김 항목 표시'라고 말하는 간단한 방법을 찾지 못했습니다.
gitk stash
의 약칭gitk stash@{0}
gitk `git stash list --pretty=format:%gd`
숨김 을 표시하려면 사용 하고 "WIP on"을 검색하여 다음 숨김으로 이동할 수 있습니다.
gitk --reflog
모든 스 태쉬 등을 볼 수 있습니다.
팝되지 않은 숨김에서 모든 변경 사항을 보려면 :
git stash show -p stash@{0}
팝되지 않은 숨김에서 한 특정 파일의 변경 사항을 보려면 :
git diff HEAD stash@{0} -- path/to/filename.php
-p
는 짧습니다 --patch
. 옵션은에서 제공됩니다 git-diff
. 긴 형식을 선호하면 작성할 수 있습니다 git stash show --patch
.
gitk 권장 사항을 넘어서서 git에서 숨김 컨텐츠를 미리 볼 수 있습니까? tig 를 설치 하고 호출 할 수 있습니다 tig stash
. 이 무료 / 오픈 콘솔 프로그램을 통해 비교할 숨김을 선택할 수도 있습니다
P
!
gitk
사람들에게는 모든 숨김을 표시하기 위해 해킹하는 것이 상대적으로 쉽습니다 .
나는 이것을 사용하여 색상 차이가있는 모든 숨김을 볼 수 있습니다 (Fedora 21에서).
git stash list |
awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n";
system("git -c color.ui=always stash show -p " $1); }' |
less -R
( Git 에서 적응 : 숨김을 적용하지 않고 숨김에 무엇이 있는지 확인하십시오 )
다음 명령으로 모든 숨김 목록을 볼 수 있습니다.
$ git stash list
stash@{0}: WIP on dev: ddd4d75 spelling fix
stash@{1}: WIP on dev: 40e65a8 setting width for messages
......
......
......
stash@{12}: WIP on dev: 264fdab added token based auth
최신 은신처가 첫 번째입니다.
n
위 목록에 제공된 숨김 색인 을 선택 하고 다음 명령을 사용하여 숨김 세부 사항을 볼 수 있습니다.
git stash show -p stash@{3}
비슷하게,
git stash show -p stash@{n}
다음 명령을 사용하여 diff를 확인할 수도 있습니다.
git diff HEAD stash@{n} -- /path/to/file
먼저 git stash list를 사용하여 모든 숨김 항목을 가져올 수 있습니다.
$git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ....
stash@{2}: WIP on ...
그런 다음 git stash show stash@{N}
특정 숨김 상태에서 파일을 확인하는 데 사용할 수 있습니다 N
. 우리가 발사하면 다음을 얻을 수 있습니다.
$ git stash show stash@{2}
fatal: ambiguous argument 'stash@2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
그 이유는 껍질이 중괄호를 먹고 git sees가 stash@2
아닌 것을보고 있기 때문일 수 있습니다 stash@{2}
. 그리고이 문제를 해결하려면 중괄호에 작은 따옴표를 사용해야합니다.
git stash show stash@'{2'}
com/java/myproject/my-xml-impl.xml | 16 ++++++++--------
com/java/myproject/MyJavaClass.java | 16 ++++++++--------
etc.
파일 이름 만 :
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show $i; done
모든 숨김에서 전체 파일 내용 :
for i in $(git stash list --format="%gd") ; do echo "======$i======"; git stash show -p $i; done
space ( forward ) 및 b( reverses )로 q페이징하고 현재 스 태쉬의 페이저를 닫을 수있는 컬러화 된 diff 출력을 얻을 수 있습니다 . 파일에 파일이 있으면 > stashes.diff
명령에 추가 하십시오.
사용을 제안하는 기존 답변 외에도 (마지막으로 세 번째 숨김의 차이를 표시하기 위해)
git stash show -p stash@{2}
에 참고 git-stash
문서 ,이 것을 기록
스 태시는 스 태시 인덱스 만 지정하여 참조 할 수도 있습니다 (예 : 정수
n
는stash@{n}
).
따라서 사용할 수도 있습니다 (이것은 위의 명령과 동일합니다)
git stash show -p 2
또한 일부 Powershell 문제를 피해야 합니다 .
나는 gitk
추적되지 않았거나 인덱스에 앉아있는 것을 정확하게 보여줄 수있는 방법 을 좋아 하지만 기본적으로 현재 분기에있는 다른 모든 커밋의 중간에 숨어있는 "커밋"을 표시합니다.
트릭은 다음과 같이 gitk를 실행하는 것입니다.
gitk "stash@{0}^!"
인용 부호는 Powershell에서 작동하도록하지만이 방법으로 다른 쉘에서도 작동해야합니다.
gitrevisions 도움말 페이지 에서이 구문을 찾으면 다음을 찾을 수 있습니다.
이
r1^!
표기법에는 커밋 r1이 포함 되지만 모든 부모는 제외됩니다. 자체적으로이 표기법은 단일 커밋 r1을 나타냅니다 .
이것은 분명히 선택된 커밋의 직계 부모만이 보여주는 모드로 gitk를 넣을 것입니다.
이것을 더 취하고 모든 숨김을 나열하려면 다음을 실행할 수 있습니다.
gitk `git stash list '--pretty=format:%gd^!'`
(배시를 달래려면 백틱 안에 작은 따옴표가 필요합니다. 그렇지 않으면 느낌표에 대해 불평합니다)
Windows에 있고 cmd 또는 Powershell을 사용하는 경우 :
gitk "--argscmd=git stash list --pretty=format:%gd^!"
다음 명령을 사용하여 다른 숨김, 커밋 또는 분기 또는 HEAD 중에서 숨김 변경의 차이를 다시 추출 할 수 있습니다.
git stash show
git show
git diff
git difftool
위에서 언급 한 각 명령을 사용하는 방법을 살펴 보겠습니다.
간단한 명령 인 git stash show는 파일 변경 사항에 대한 간략한 요약을 제공하지만 현재 HEAD에 대한 변경 내용의 차이는 표시하지 않습니다.
git-show 명령은 다양한 유형의 객체를 보는 데 사용됩니다.
git-show 명령은 숨김 변경을 시각화하는 데 사용될뿐만 아니라 얼룩, 트리, 태그 및 커밋과 같은 하나 이상의 객체를 보는데도 사용됩니다.
git-diff 명령은 커밋, 커밋 및 작업 트리 등의 변경 사항을 표시하는 데 사용되는 일반적인 명령 중 하나입니다.
기본적으로 git diff는 다른 숨김 참조 또는 커밋이 지정되지 않은 한 저장소의 현재 상태에 대해 선택된 숨김의 diff (수정 된 파일)를 표시합니다.
최상위 숨김 stash @ {0}과 마스터 분기의 차이를 얻으려면 다음을 수행하십시오.
$ git diff stash @ {0} 마스터
변경 내용이 다르지 않은 파일 이름 만 표시하십시오.
$ git diff --name-only stash @ {0} 마스터
선택된 파일에 대해 선택된 스 태쉬 사이의 차이점을 참조하십시오.
$ git diff stash @ {0} ^ 1 stash @ {0}-
git-difftool 명령을 사용하여 선택된 숨김과 선택된 커밋 또는 분기 또는 숨김 사이의 차이점을 찾을 수도 있습니다.
최신 두 스 태쉬의 차이점을 확인하십시오.
$ git difftool stash @ {0} stash @ {0} ^ 1
자식 difftool --dir-diff stash @ {0} stash @ {0} ^ 1
요약:
선택된 stash git stash show, git show, git diff, git difftool에서 diff를 추출하는 데 유용한 명령입니다.
git stash show 명령을 사용하여 차이점을 확인하십시오.
git stash show -p stash @ {0}
git show 명령을 사용하여 숨김의 변경 사항을 확인하십시오.
git show stash @ {1}
git diff 명령을 사용하여 최신 숨김과 선택된 커밋의 차이점을 확인하십시오.
git diff stash @ {0}
참고 문헌 :
https://howto.lintel.in/how-to-see-stashed-changes-using-git-stash/
git stash show -p stash@{1} >~/.diff && vim ~/.diff
(vim
텍스트 편집기가diff
출력을 위한 구문 강조 기능을 지원하는 한 텍스트 편집기 일 필요는 없음 ).