@bentolo에서 언급했듯이 불평하는 파일을 수동으로 삭제하고 분기를 전환 한 다음 수동으로 다시 추가 할 수 있습니다. 그러나 저는 개인적으로 "git 내부"에 머무르는 것을 선호합니다.
이를 수행하는 가장 좋은 방법은 숨김을 분기로 변환하는 것입니다. 브랜치가되면 여러분이 알고 사랑하는 일반적인 브랜치 관련 기술 / 도구를 사용하여 git에서 정상적으로 작업 할 수 있습니다. 이것은 실제로 나열된 오류가없는 경우에도 은닉으로 작업하는 데 유용한 일반적인 기술입니다. 숨김이 실제로는 내부적으로 커밋되기 때문에 잘 작동합니다 (PS 참조).
숨김을 브랜치로 변환
다음은 숨김이 생성되었을 때 HEAD를 기반으로 분기를 생성 한 다음 숨김을 적용합니다 (커밋하지 않음).
git stash branch STASHBRANCH
"stash 분기"작업
다음에 수행 할 작업은 숨김과 대상 브랜치 (ORIGINALBRANCH라고 함)가 현재 어디에 있는지 간의 관계에 따라 다릅니다.
옵션 1-일반적으로 숨김 분기 리베이스 (숨김 이후 많은 변경 사항)
ORIGINALBRANCH에서 많은 변경을 수행했다면 STASHBRANCH를 지역 지점처럼 취급하는 것이 가장 좋습니다. STASHBRANCH에서 변경 사항을 커밋하고 ORIGINALBRANCH에서 리베이스 한 다음 ORIGINALBRANCH로 전환하고 STASHBRANCH 변경 사항을 리베이스 / 병합하십시오. 충돌이있는 경우 정상적으로 처리하십시오 (이 접근 방식의 장점 중 하나는 충돌을 확인하고 해결할 수 있다는 것입니다).
옵션 2-숨김과 일치하도록 원래 분기 재설정 (숨김 이후 제한적 변경)
몇 가지 단계적 변경을 유지하면서 방금 숨긴 다음 커밋하고 원하는 것은 숨길 때 준비되지 않은 추가 변경 사항을 얻는 것입니다. 다음을 수행 할 수 있습니다. 작업 복사본을 변경하지 않고 원래 분기 및 색인으로 다시 전환됩니다. 최종 결과는 작업 복사본의 추가 숨김 변경 사항입니다.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
배경
Stashe는 브랜치 / 태그 (패치 아님)와 같은 커밋입니다.
추신, stash를 패치로 생각하고 싶지만 (커밋을 패치로 생각하고 싶은 유혹처럼) stash는 실제로 생성되었을 때 HEAD에 대한 커밋입니다. 신청 / 팝업 할 때 현재 브랜치에 체리를 선택하는 것과 유사한 작업을 수행합니다. 브랜치와 태그는 실제로 커밋에 대한 참조 일 뿐이므로 여러면에서 스 태시, 브랜치 및 태그는 커밋 (및 해당 내역)을 가리키는 다른 방법 일뿐입니다.
작업 디렉토리를 변경하지 않은 경우에도 필요함
PPS, --patch 및 / 또는 --include-untracked와 함께 숨김을 사용한 후에이 기술이 필요할 수 있습니다. 작업 디렉토리를 변경하지 않아도 이러한 옵션은 때때로 다시 적용 할 수없는 숨김을 생성 할 수 있습니다. 나는 그 이유를 완전히 이해하지 못한다는 것을 인정해야합니다. 자세한 내용은 http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html 을 참조하십시오 .