un-stash가 현재 작업 트리에 미치는 변경 사항을 어떻게 볼 수 있습니까? 적용하기 전에 어떤 변경 사항이 적용되는지 알고 싶습니다!
질문자 :Heavy Gray
가장 최근 보관함 보기:
git stash show -p
임의의 은닉처 보기:
git stash show -p stash@{1}
git stash
맨페이지에서:
기본적으로 이 명령은 diffstat를 표시하지만 git diff로 알려진 모든 형식을 허용합니다(예: git stash show -p stash@{1}를 사용하여 두 번째로 최근 숨김을 패치 형식으로 볼 수 있음).
Amber
가장 최근의 보관함을 보려면:
git stash show -p
임의의 은닉물을 보려면:
git stash show -p stash@{1}
또한 git diff를 사용하여 stash를 모든 분기와 비교합니다.
당신이 사용할 수있는:
git diff stash@{0} master
분기 마스터와 비교하여 모든 변경 사항을 보려면.
또는 다음을 사용할 수 있습니다.
git diff --name-only stash@{0} master
변경된 파일 이름만 쉽게 찾을 수 있습니다.
czerasz
숨김 변경 사항의 기반이 되는 분기가 그동안 변경된 경우 이 명령이 유용할 수 있습니다.
git diff stash@{0}^!
이것은 stash를 기반으로 하는 커밋과 비교합니다.
theintz
작업 트리가 더티 인 경우 먼저 더티 작업 트리를 커밋한 다음 이를 스태시와 비교하여 이를 스태시와 비교할 수 있습니다. 그 후에 더티 작업 트리를 사용하여 커밋을 취소할 수 있습니다(커밋 로그에 더티 커밋을 포함하고 싶지 않을 수 있기 때문에).
다음 접근 방식을 사용하여 두 개의 은닉을 서로 비교할 수도 있습니다(이 경우 처음에는 은닉 중 하나를 팝합니다).
더러운 작업 트리를 커밋하십시오.
git add . git commit -m "Dirty commit"
해당 커밋으로 숨김을 비교하십시오.
git diff HEAD stash@{0}
그런 다음 나중에 커밋을 되돌리고 작업 디렉토리에 다시 넣을 수 있습니다.
git reset --soft HEAD~1 git reset .
이제 당신은 더러운 작업 나무를 당신의 은닉처와 구별했고, 당신이 처음에 있던 곳으로 돌아갔습니다.
Magne
@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}
또는 stash 및 unstashing이 어쨌든 빠르고 쉽다는 것을 인정하고 변경 사항을 unstash하고 검사하십시오. 그 순간에 그것들을 원하지 않는다면 그것들을 버리십시오(현재 색인/작업 폴더 변경). 완전히 그
git stash apply git diff git reset git checkout
SensorSmith
stash를 비교하려는 항목(로컬 작업 트리/부모 커밋/헤드 커밋)에 따라 실제로 사용할 수 있는 몇 가지 명령이 있으며 그 중 좋은 오래된 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 에서 이러한 모든 명령에 대한 별칭을 개인적으로 설정했습니다.
David Deprost
만일을 대비하여 작업 트리와 stash에 있는 파일을 비교하려면 아래 명령을 사용하십시오.
git diff stash@{0} -- fileName (with path)
Pramod B R
이것은 git 버전 1.8.5.2에서 작동합니다.
git diff stash HEAD
Rimian
비교용 도구가 있는 경우(예: 비교 불가)
git difftool stash HEAD
yerlilbilgin
아무것도 이동하지 않고 이를 수행하는 한 가지 방법은 patch
가 git diff(기본적으로 통합된 diff)를 읽을 수 있다는 사실을 활용하는 것입니다.
git stash show -p | patch -p1 --verbose --dry-run
그러면 패치가 일반적으로 수행하는 작업에 대한 단계별 미리보기가 표시됩니다. 이것에 대한 추가 이점은 패치가 작업 트리에 패치를 작성하는 것을 자체적으로 방지하지 않는다는 것입니다. 어떤 이유로 git이 수정 전 커밋에 대해 종료해야 하는 경우 계속해서 --dry-를 제거해야 합니다. 자세한 지침을 실행하고 따르십시오.
xenithorb
git diff <current-branchname>..stash@{0}
가 로컬 작업 트리와 가장 최근의 숨김 사이의 변경 사항을 비교하는 가장 직관적인 방법이라고 생각합니다. stash@{0}
를 해당하는 숨김 번호로 바꿉니다.
git diff stash@{0}
가 잘못된 결과를 생성할 수 있다는 점에 유의하세요. stash와 현재 브랜치의 두 기록이 분기된 경우 diff는 stash에 모든 새로운 항목을 추가하고 현재 브랜치에 고유한 모든 것을 제거하는 것처럼 보입니다.
git book을 기반으로 한 답변
또한 이중 점 ..
및 삼중 점 ...
서로 다른 커밋 비교를 지정하며 이 답변에 대해 이중 점을 참조하고 있습니다. 자세한 내용은 git book을 참조하십시오.
ciiyan
나는이 스레드와에서 배운 것을 결합 이 하나의 내가 "숨김 안에 무엇인지"를 참조 할 때, 내가 먼저 실행 :
git stash show stash@{0}
어떤 파일이 수정되었는지 보여줍니다. 그런 다음 difftool에서 멋진 시각적 차이점을 얻으려면 다음을 수행합니다.
git difftool --dir-diff stash@{0} stash@{0}^
이것은 부모에 대해 주어진 숨김의 모든 차이점을 한 번에 표시합니다.
~/.gitconfig
에서 diff 도구를 구성할 수 있습니다(예: Meld 사용).
... [diff] tool = meld
Ferrard
그녀는 은닉 목록
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
지사에서 현재 코드를 고려하고 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
의 조합을 사용하는 것은 절대 권장하지 않습니다. 잘못된 분기에 stash를 적용하면... 가끔 코드를 복구하기가 어렵습니다.
Raúl Martín
FWIW 이것은 다른 모든 답변에 약간 중복될 수 있으며 허용되는 답변과 매우 유사합니다. 하지만 아마도 누군가를 도울 것입니다.
git stash show --help
필요한 모든 것을 제공합니다. 숨김 쇼 정보를 포함합니다.
쇼 [<stash>]
stash에 기록된 변경 사항을 stashed 상태와 원래 부모 간의 차이점으로 표시합니다. no가 주어지면 가장 최근의 것을 보여줍니다. 기본적으로 이 명령은 diffstat를 표시하지만 git diff로 알려진 모든 형식을 허용합니다(예: git stash show -p stash@{1}를 사용하여 두 번째로 최근 숨김을 패치 형식으로 볼 수 있음). stash.showStat 및/또는 stash.showPatch 구성 변수를 사용하여 기본 동작을 변경할 수 있습니다.
Rockin4Life33
출처 : http:www.stackoverflow.com/questions/7677736/git-diff-against-a-stash
'etc. > StackOverFlow' 카테고리의 다른 글
Java에 임시 필드가 있는 이유는 무엇입니까? (0) | 2022.02.15 |
---|---|
"git commit" 대신 수행된 "git commit --amend"를 실행 취소하는 방법 (0) | 2022.02.15 |
가계도 소프트웨어의 주기 (0) | 2022.02.15 |
Mathematica로 Waldo를 어떻게 찾나요? (0) | 2022.02.15 |
업데이트 및 삭제를 위한 HTTP 상태 코드? (0) | 2022.02.15 |