programing

스택에 대한 Git diff.

showcode 2023. 5. 25. 22:12
반응형

스택에 대한 Git diff.

현재 작업 트리에 대한 스테이징 해제의 변경 내용을 확인하려면 어떻게 해야 합니까?적용하기 전에 어떤 변경사항이 있는지 알고 싶습니다!

최신 저장 보기:

git stash show -p

임의 스택 보기:

git stash show -p stash@{1}

git stashmanpages:

기본적으로 명령은 diffstat을 표시하지만 gitdiff로 알려진 모든 형식을 허용합니다(예: gitstash show -pstash@{1}: 패치 형식으로 두 번째로 최근의 stash를 보려면).

가장 최근의 저장소를 보려면 다음을 수행합니다.

git stash show -p

임의 스택을 보는 방법

git stash show -p stash@{1}

또한 gitdiff를 사용하여 다른 브랜치와 stash를 비교합니다.

사용할 수 있는 항목:

git diff stash@{0} master

분기 마스터와 비교하여 모든 변경 사항을 확인합니다.


또는 다음을 사용할 수 있습니다.

git diff --name-only stash@{0} master

변경된 파일 이름만 쉽게 찾을 수 있습니다.

그동안 저장된 변경사항의 기반이 되는 분기가 변경된 경우 다음 명령이 유용할 수 있습니다.

git diff stash@{0}^!

이는 저장소를 기반으로 하는 커밋과 비교합니다.

(tree / commit / commit)와 명령을 사용할 수 , 그 중 good old(" old" / "good" / "good") 할 수 .git diff 더 인 것은 그리고구으로적체더좀▁and로.git stash show:

↓와 스택 비교 약간의 차이가 있는 기트스택쇼
로컬 작업 트리 git diff stash@{0} git stash show -l
상위 커밋 git diff stash@{0}^ stash@{0} git stash show -p
헤드 커밋 git diff stash@{0} HEAD /

하는 동안에git stash show더 친화적으로 .git diff보다 집중적인 차이에 대한 파일 이름을 지정할 수 있다는 점에서 실제로 더 강력합니다.는 개인적으로 zshgit 플러그인에 이러한 모든 명령에 대한 별칭을 설정했습니다.

작업 트리가 더러우면 먼저 더티 작업 트리를 커밋한 다음 이를 스택과 비교하여 스택과 비교할 수 있습니다.나중에 더티 작업 트리를 사용하여 커밋을 실행 취소할 수 있습니다(커밋 로그에 더티 커밋을 포함하지 않을 수도 있음).

다음 방법을 사용하여 두 개의 스택을 서로 비교할 수도 있습니다(이 경우에는 처음에 두 개의 스택 중 하나만 팝니다).

  • 더러운 작업 트리를 커밋합니다.

    git add .
    git commit -m "Dirty commit"
    
  • 해당 커밋을 사용하여 스택 분산:

    git diff HEAD stash@{0}
    
  • 그런 다음 커밋을 되돌리고 작업 디렉토리에 다시 넣을 수 있습니다.

    git reset --soft HEAD~1
    git reset .
    

이제 당신은 더러운 작업 트리를 당신의 저장고로 분산시키고, 처음에 당신이 있던 곳으로 돌아옵니다.

@Magne의 답변은 질문에 대한 가장 유연하고 유용한 해석에 대답하는 유일한 (매우 늦은) 날짜이지만, 필요 이상으로 상당히 복잡합니다.커밋하고 재설정하는 대신 작업 복사본을 저장하고 비교한 다음 저장하지 마십시오.

git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop

작업 폴더 변경 내용을 일시적으로 스택의 최상위(stash@{0})로 지정하여 스택의 최상위와 작업 폴더 간의 차이점을 보여 줍니다.원래의 상단을 아래로 이동(stash@{1})한 다음 '새 세트' 위치에서 원래의 상단을 사용하여 비교하면 현재 작업 위에 적용했을 때의 변경 사항을 확인할 수 있습니다.

"하지만 현재 일이 없으면 어떻게 합니까?"그러면 당신은 보통의 지루한 경우에 속하게 됩니다.그냥 @앰버의 대답을 사용하세요.

git stash show

또는 @czerasz의 대답

git diff stash@{0}

또는 저장 및 저장 해제가 빠르고 쉽다는 것을 인정하고 변경 사항을 저장하고 검사합니다.현재 사용하지 않으려면 해당 사용자를 삭제합니다(현재 인덱스/작업 폴더가 변경됨).전체적으로 그것은.

git stash apply
git diff
git reset
git checkout

만약을 위해, 작업 트리와 스택의 파일을 비교하려면 아래 명령을 사용합니다.

git diff stash@{0} -- fileName (with path)

이것은 Monggit 버전 1.8.5.2에서 작동합니다.

git diff stash HEAD

diff를 위한 도구가 있는 경우(비교할 수 없을 정도로 유사)

git difftool stash HEAD

는 어요믿을 믿습니다.git diff <current-branchname>..stash@{0}로컬 작업 트리와 최신 스택 간의 변경 사항을 비교할 수 있는 가장 직관적인 방법입니다.를 바꿉니다.stash@{0}필요에 따라 적용 가능한 재고 번호를 사용합니다.

해, 조심해요.git diff stash@{0}잘못된 결과를 초래할 수 있습니다.저장소와 현재 분기의 두 기록이 서로 다른 경우, 차이점은 저장소에 모든 새 항목을 추가하고 현재 분기에 고유한 모든 항목을 제거하는 것처럼 보일 것입니다.

기트북에 근거한 답변

또한, 이중 점에 유의하십시오... 도트 리고삼중점그....서로 다른 커밋 비교를 지정하고, 이 답변에 대한 이중 점을 참조합니다.자세한 내용은 깃북 참조

아무것도 움직이지 않고 이를 수행하는 한 가지 방법은patchdiff를 읽을 수 . diffs 을 unified 기 수 있 를 니 습 다 표 시 합 니 다 으 로 적 본 읽 를 기 를 ▁can 니 ▁read 다 ▁g 합 표 unified 시습 다

git stash show -p | patch -p1 --verbose --dry-run

이렇게 하면 패치가 일반적으로 수행하는 작업을 단계별로 미리 볼 수 있습니다.이에 대한 추가적인 이점은 패치 자체가 작업 트리에 패치를 쓰는 것을 방지하지 않는다는 것입니다. 어떤 이유로든 수정 전 커밋을 중단하고 제거해야 하는 경우에는 임시 실행을 수행하고 자세한 지침을 따르십시오.

그녀는 창고 목록

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를 원한다면 (이것은 stash를 보여주기 위해 다르므로, 그것이 내가 이 답을 쓰는 이유입니다. 당신의 지점에 있는 현재 코드를 고려하고 당신이 적용할 것을 보여주기만 하면 됩니다.)

사용할 수 있는 항목:

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 stash show stash@{0}

수정된 파일이 표시됩니다.그런 다음 diff 툴에서 시각적인 차이를 얻기 위해 다음 작업을 수행합니다.

git difftool --dir-diff stash@{0} stash@{0}^

이렇게 하면 상위 항목에 대해 지정된 스택의 모든 차이가 한 번에 표시됩니다.

에서 diff 도구를 구성할 수 있습니다.~/.gitconfig: Meld 사용:

...
[diff]
    tool = meld

FWIW 이것은 다른 모든 답변에 비해 다소 중복될 수 있으며, 현장에서 허용되는 답변과 매우 유사합니다. 하지만 누군가에게 도움이 될 수도 있습니다.

git stash show --help저장 쇼 정보를 포함하여 필요한 모든 정보를 제공합니다.

표시 [<stash>]

저장된 상태와 원래 상위 상태 사이의 차이로 저장된 변경 내용을 표시합니다.no를 지정하면 최신 항목을 표시합니다.기본적으로 명령은 diffstat을 표시하지만 gitdiff로 알려진 모든 형식을 허용합니다(예: gitstash show -pstash@{1}: 패치 형식으로 두 번째로 최근의 stash를 보려면).저장 장치를 사용할 수 있습니다.showStat 및/또는 stash.기본 동작을 변경하려면 showPatch 구성 변수를 선택합니다.

언급URL : https://stackoverflow.com/questions/7677736/git-diff-against-a-stash

반응형