답변:
가장 최근의 숨김을 확인하십시오.
git stash show -p
임의의 숨김을 참조하십시오.
git stash show -p stash@{1}
로부터 git stash
맨 :
기본적으로이 명령은 diffstat를 표시하지만 git diff로 알려진 형식 (예 : git stash show -p stash @ {1})을 사용하여 두 번째 최신 숨김을 패치 형식으로 표시합니다.
stash@{0}
기본값입니다. 이전 보관소를 보려면 인수 만 필요합니다.
{0}
.
-p
을 의미합니까?
가장 최근 숨김을 보려면 :
git stash show -p
임의 숨김을 보려면
git stash show -p stash@{1}
또한 git diff를 사용하여 숨김을 분기와 비교합니다.
당신이 사용할 수있는:
git diff stash@{0} master
지점 마스터와 비교 한 모든 변경 사항을 볼 수 있습니다.
또는 다음을 사용할 수 있습니다.
git diff --name-only stash@{0} master
변경된 파일 이름 만 쉽게 찾을 수 있습니다.
git diff stash@{0} master
하면 현재 마스터 (스 태시 후 마스터에서 수행 된 작업 포함)에 대한 숨김을 얻습니다. 숨김이 변경 될 파일 / 줄이 아니라 질문에 대한 내용입니다.
git difftool --tool=... stash@{0} HEAD
git diff stash@{0}^ stash@{0}
git diff stash@{0} master -- filename
을 추가하여 특정 파일을 변경할 수 있습니다.
보관 된 변경의 기반이되는 분기가 그 동안 변경된 경우이 명령이 유용 할 수 있습니다.
git diff stash@{0}^!
이것은 숨김을 기반으로 한 커밋과 비교합니다.
~/.gitconfig
:laststash = diff stash@{0}^!
git difftool stash^!
커밋에 git difftool stash HEAD
대한 마지막
작업 트리가 더러 우면 먼저 더티 작업 트리를 커밋 한 다음 스 태시와 비교하여이를 스 태시와 비교할 수 있습니다. 나중에 더티 작업 트리를 사용하여 커밋을 취소 할 수 있습니다 (커밋 로그에 더티 커밋을 원하지 않을 수도 있음).
다음 방법을 사용하여 두 스 태쉬를 서로 비교할 수 있습니다 (이 경우 스 태쉬 중 하나만 처음에 팝).
더러운 작업 트리를 커밋하십시오.
git add .
git commit -m "Dirty commit"
커밋으로 숨겨 놓으십시오.
git diff HEAD stash@{0}
그런 다음 커밋을 되돌리고 작업 디렉토리에 다시 넣을 수 있습니다.
git reset --soft HEAD~1
git reset .
이제 당신은 더러워진 나무를 숨겨 놓았으며, 처음 있던 곳으로 돌아 왔습니다.
git stash show -l
. 작업중 인 (더러운) 사본과 최신 숨김을 비교합니까? 얻지 않고 어떻게 사용 error: switch l requires a value
합니까?
git stash show -l
. 왜 그것이 당신을 위해 작동하지 않는지에 관해서는, 당신이 git의 이전 버전에있을 것이라고 추측 할 수 있습니까? git v2.20.1을 사용 중이며 오류없이 완벽하게 작동합니다.
@Magne의 답변 은 질문에 대한 가장 유연하고 유용한 해석에 대답 하는 유일한 (매우 늦은) 날짜이지만 필요한 것보다 상당히 복잡합니다. 커밋하고 재설정하는 대신 작업 복사본을 숨기고 비교 한 다음 고정 해제하십시오.
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
즉, 작업 폴더 변경 사항을 임시 스택의 최상위 스택 (stash @ {0})으로 만들고 원래의 최상위 스택을 아래로 이동하여 (stash @ {1}) 숨김 스택의 상단과 작업 폴더의 차이점을 보여줍니다. ) 그런 다음 '새 세트'위치에서 원래 상단을 사용하여 비교하여 현재 작업 위에 적용했을 때의 변경 사항을 확인할 수 있습니다.
"하지만 현재 작업이 없다면 어떻게해야합니까?" 그렇다면 당신은 정상적인 지루한 경우에 있습니다. @ Amber의 답변을 사용하십시오.
git stash show
또는 @czerasz의 답변
git diff stash@{0}
어쨌든 스 태싱 및 스 태싱이 빠르고 쉽다는 것을 인정하십시오. 변경 사항을 스 태싱하고 검사하십시오. 현재 원하지 않는 경우 버립니다 (현재 색인 / 작업 폴더 변경). 그게 다야
git stash apply
git diff
git reset
git checkout
git stash save -u
이것은 git 버전 1.8.5.2에서 작동합니다.
git diff stash HEAD
git stash apply
.
diff 도구가있는 경우 (비교를 넘어서)
git difftool stash HEAD
git stash apply
.
HEAD
합니다. HEAD를 제거하기 위해 @yerlilbilgin의 대답을 수정할 수는 있지만 git을 사용하는 사람은 그 부분을 알아낼 수 있으며 대답을 길게하면 읽을 수 없게됩니다. @yerlibilgin에 대한 책임은 없습니다.
FWIW 이것은 다른 모든 답변에 약간 중복 될 수 있으며 허용되는 답변과 매우 유사합니다. 하지만 어쩌면 누군가를 도울 것입니다.
git stash show --help
필요한 모든 것을 줄 것입니다. 숨김 쇼 정보 포함
[<stash>] 표시
숨김 상태와 원래 부모 사이의 차이로 숨김에 기록 된 변경 사항을 표시하십시오. 아무 것도 주어지지 않으면 가장 최근의 것을 보여줍니다. 기본적으로이 명령은 diffstat를 표시하지만 git diff로 알려진 형식 (예 : git stash show -p stash @ {1})을 사용하여 두 번째 최신 숨김을 패치 형식으로 표시합니다. stash.showStat 및 / 또는 stash.showPatch 구성 변수를 사용하여 기본 동작을 변경할 수 있습니다.
그녀는 숨겨둔 목록
git stash list
stash@{0}: WIP on feature/blabla: 830335224fa Name Commit
stash@{1}: WIP on feature/blabla2: 830335224fa Name Commit 2
따라서 숨김 번호를 얻고 다음을 수행하십시오.
넌 할 수있어:
git stash show -p stash@{1}
그러나 diff를 원한다면 (이것은 숨김을 표시하는 것과 다릅니다.이 대답을 쓰는 이유입니다. Diff
분기의 현재 코드를 고려하고 show
적용 할 내용을 보여 주십시오 )
당신이 사용할 수있는:
git diff stash@{0}
또는
git diff stash@{0} <branch name>
또 다른 흥미로운 일은 :
git stash apply
git stash apply stash@{10}
이렇게하면 숨김을 목록에서 제거하지 않고 적용 할 수 있습니다. git checkout .
변경 사항을 제거하거나 목록에서 숨김을 제거 할 수 있습니다 git stash drop stash@{10}
.
여기에서 내가 사용하는 것이 좋습니다 적이 git stash pop
과의 조합을 사용 git stash apply
하고 git stash drop
잘못된 지점에 은닉을 적용하면 ... 물론 가끔 코드를 복구하기가 어렵습니다.
(/ 머리는 로컬 작업 트리 / 부모 커밋 커밋) 당신이 마리화나를 비교하려는 작업에 따라 사용할 수있는 여러 가지 명령은 거기에 실제로있는 사이 좋은 오래된 git diff
, 그리고 더 구체적으로 git stash show
:
╔══════════════════════╦═══════════════════════════════╦═══════════════════╗
║ Compare stash with ↓ ║ git diff ║ git stash show ║
╠══════════════════════╬═══════════════════════════════╬═══════════════════╣
║ Local working tree ║ git diff stash@{0} ║ git stash show -l ║
║----------------------║-------------------------------║-------------------║
║ Parent commit ║ git diff stash@{0}^ stash@{0} ║ git stash show -p ║
║----------------------║-------------------------------║-------------------║
║ HEAD commit ║ git diff stash@{0} HEAD ║ / ║
╚══════════════════════╩═══════════════════════════════╩═══════════════════╝
언뜻 git stash show
보기에 사용자에게 친숙해 보이지만 git diff
실제로는 초점이 다른 diff에 파일 이름을 지정할 수 있다는 점에서 더 강력합니다. zsh git plugin 에서 이러한 모든 명령에 대한 별명을 개인적으로 설정했습니다 .