git stash create로 생성 된 숨김을 삭제하는 방법은 무엇입니까? 명확하게하려면 : 숨김을 작성하십시오. ~/tmp/a(master)

Git stash는 변경 사항이 없으면 git stash; git stash pop저장소에 변경 사항이있는 경우와 다른 것을 수행 하므로 스크립트하기가 약간 어렵다는 것을 제외하고는 내가 원하는 많은 것을하는 것 같습니다 .

그것은 git stash create그 문제에 대한 해답이며, 한 가지를 제외하고는 모든 것이 작동합니다 … 나는 생성 된 숨김을 제거 할 수 없습니다. 숨김을 제거 할 수있는 방법이 있습니까?

내가하고있는 일을 100 % 명확하게하려면 :

숨김을 작성하십시오.

~/tmp/a(master) $ git stash create
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message

숨김을 사용하십시오.

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#

숨김을 삭제하십시오 (이 마지막 비트가 작동하지 않는 것을 제외하고)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference


답변

로 만든 일반 숨김을 삭제하려면 또는을 ( git stash를) 원합니다 . 자세한 내용은 아래를 참조하십시오.git stash dropgit stash drop stash@{n}


로 만든 숨김을 삭제할 필요가 없습니다 git stash create. 문서에서 :

일반 커밋 객체 인 숨김 항목을 만들고 ref 네임 스페이스의 아무 곳에 나 저장하지 않고 객체 이름을 반환합니다. 스크립트에 유용합니다. 사용하려는 명령이 아닐 수도 있습니다. 위의 “저장”을 참조하십시오.

숨김 커밋을 참조하는 것은 없으므로 결국 가비지 수집이 수행됩니다.


git stash또는로 만든 숨김git stash save은 (으) 저장하며 refs/stash로 삭제할 수 있습니다 git stash drop. 모든 Git 객체와 마찬가지로 실제 숨김 콘텐츠는 gc만료 된 후 객체를 정리할 때까지 컴퓨터에서 삭제되지 않습니다 (기본값은 2 주 후).

이전에 숨겨 놨다는에 저장됩니다 refs/stash reflog (시도 cat .git/logs/refs/stash), 및 삭제할 수 있습니다 git stash drop stash@{n}경우, n수가으로 표시됩니다 git stash list.


답변

git stash drop매개 변수를 사용하지 않습니다-상단 숨김을 삭제하거나 다음과 같은 숨김 참조 stash@{n}n지정합니다. 에 커밋 ID를 전달할 수 없습니다 git stash drop.

git stash drop            # drop top hash, stash@{0}
git stash drop stash@{n}  # drop specific stash - see git stash list

숨김을 삭제 하면 스택 아래로 모든 숨김 의 지정 이 변경 됩니다 stash@{n}.

stash create숨김 항목을 사용 하는 경우 “스 태쉬”에 대해 작성되지 않으므로 삭제할 항목이 없기 때문에 왜 숨김을 삭제해야한다고 생각하는지 잘 모르겠습니다 .


답변

하나의 숨김을 100 % 확신 하거나 모든 숨김 을 삭제하려는 경우 (a git stash list를 107 % 확신) 다음을 수행 할 수 있습니다.

git stash clear

.. 그리고 잊어 버립니다 (모든 숨김을 삭제합니다).

참고 : 여기에 나와서 모두를 지우는 방법을 찾는 사람들을 위해이 답변을 추가했습니다 (나처럼).


답변

자식 문서에서 : http://git-scm.com/docs/git-stash

드롭 [-q | –quiet] []

숨김 목록에서 단일 숨김 상태를 제거하십시오. 제공되지 않으면 최신 항목을 제거합니다. 즉 stash@{0}, 그렇지 않으면 stash @ {} 형식의 유효한 숨김 로그 참조 여야합니다.

예:

git stash drop stash@{5}

그러면 숨김 항목 5가 삭제됩니다. 모든 숨김 목록을 보려면 다음을 수행하십시오.

git stash list

답변

당신은 사용해야합니다

git stash save

그리고 아닙니다

git stash create

이것은 (보통 커밋 객체 인) 숨김을 생성 하고 ref 네임 스페이스의 어느 곳에저장 하지 않고 객체 이름을 반환 하기 때문 입니다. 따라서 숨김 적용으로 액세스 할 수 없습니다.

git stash save "some comment"다른 분기로 복제 / 이동하려는 단계적 변경 사항이있는 경우 사용

git stash apply stash@{0}저장된 (저장된) 변경 사항을 현재 브랜치에 반영하려는 경우 사용 (저장된 숨김 인덱스가 0이라고 가정)

항상 git stash list모든 인덱스를 확인 하는 데 사용할 수 있습니다

git stash drop stash@{0}특정 숨김을 삭제 하려면 (저장된 숨김 인덱스가 0이고 삭제하려는 경우)를 사용하십시오.


답변

또한 작동합니다

git stash drop <index>

처럼

git stash drop 5

답변

문서가 여기에 있습니다 (중국어) .

당신이 사용할 수있는

자식 숨김 목록

자식 숨김 드롭 숨김 @ {0}