git stash pop과 git stash의 차이점 적용


1023

git stash pop꽤 오랫동안 사용 하고 있습니다. 나는 최근에 git stash apply명령 에 대해 알았습니다 . 그것을 시험해 보았을 때와 같은 것으로 보입니다 git stash pop.

차이점은 무엇이며 git stash pop그리고 git stash apply?

답변:


1626

git stash pop 적용 후 (기본적으로 최상위) 숨김을 버리고 나중에 재사용 할 수 있도록 git stash apply 숨김 목록남겨 둡니다 (또는 나중에 할 수 git stash drop있음).

이후 충돌이 발생하지 않는 한 이런 현상이 발생 git stash pop하면 숨김을 제거하지 않고 그대로 작동합니다 git stash apply.

그것을 보는 또 다른 방법 git stash popgit stash apply && git stash drop입니다.


117
아래 @briankip의 답변 메모와 같이, 숨김이 표시 될 때 충돌이 발생하면 pop은 숨김을 제거하지 않으며 정확하게 적용되는 것처럼 작동합니다
Kashif

분기의 비 단계적 변경이 git stash pop의 결과 와 동일하더라도 충돌 오류가 계속 발생합니다.
DimP

79

John Zwinck이 말했듯이의 차이점을 설명하는 유용한 링크가 있습니다 git stash pop.

예를 들어, 숨김 변경 사항은 처음 숨김을 작성한 후 작성한 다른 변경 사항과 충돌한다고 가정하십시오. pop과 apply는 병합 충돌 해결 모드를 유용하게 트리거하여 그러한 충돌을 멋지게 해결할 수있게 해줄 것입니다. 그러나 아마도 팝을 기대하더라도 스 태쉬를 제거하지는 않습니다. 많은 사람들이 스 태쉬가 단순한 스택 일 것으로 기대하기 때문에, 종종 그들이 사라 졌다고 생각하기 때문에 실수로 같은 스 태쉬가 갑자기 튀어 나오는 원인이됩니다.

링크 : http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/


6
팝이 실패했을 때 숨어있는 사실은 처음에는 그렇게 보일지라도 실제로 단점이 아닙니다.
Amalgovinus

65

git stash pop상단 숨김 요소를 적용하고 스택에서 제거합니다. git stash apply동일하지만 숨김 스택에 그대로 둡니다.


42

실제로 사용하면 차이를 더 잘 이해하는 데 도움이 될 수 있습니다.

master지점에서 작업 중이고 hello.txt"Hello"문자열이 포함 된 파일 이 있다고 가정 합니다.

파일을 수정하고 "world"문자열을 추가해 봅시다. 이제 방금 찾은 사소한 버그를 수정하기 위해 다른 지점으로 이동하려고하므로 stash변경 해야합니다 .

git stash

다른 지점으로 이동하여 버그를 수정했으며 이제 master지점에서 계속 작업 할 준비가 되었으므로 다음과 pop같이 변경하십시오.

git stash pop

이제 숨김 컨텐츠를 검토하려고하면 다음과 같은 결과가 나타납니다.

$ git stash show -p
No stash found.

그러나 git stash apply대신에 사용 하면 보관 된 콘텐츠를 얻을 수 있지만 보관할 수도 있습니다.

$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world

따라서 pop스택의 팝과 같습니다. 실제로 팝업되면 요소를 제거 apply하지만 peek 과 같습니다 .


5

에서는 git 숨김 현재 변경된 파일이 이동 될 수있는 저장 공간이다.

stash영역은 git저장소 에서 일부 변경 사항을 가져 오고 gitrepo 에서 사용 가능한 일부 상호 파일에서 일부 변경 사항을 감지 하려는 경우에 유용합니다 .

git stash apply //apply the changes without removing stored files from stash area.

git stash pop  // apply the changes as well as remove stored files from stash area.

참고 :- git apply숨김 영역에서 변경 사항을 적용하고 영역에서 변경 사항을 git pop제거 하는 동안에 만 적용하십시오 stash.


1

망할 놈의 은닉 Pop vs apply작업

최상위 숨김 변경 사항을 현재 비 단계적 변경 사항에 적용하고 해당 숨김을 삭제하려면로 이동해야합니다 git stash pop.

# apply the top stashed changes and delete it from git stash area.
git stash pop  

그러나 최상위 비 저장 변경 사항을 삭제하지 않고 현재 비 단계적 변경 사항에 적용하려면로 이동해야합니다 git stash apply.

참고 :이 경우는 팝이 감소 (top = top-1)만큼 최상위를 변경하지만 최상위 요소 만 가져올 수 있는 Stack클래스 pop()peek()메소드 와 관련 될 수 있습니다 peek().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.