저장된 커밋되지 않은 변경 사항을 복구하는 방법
는 개발 변경 이 몇 가지 개발부서커지않변은사경몇항이다저니사다장습했용여하음을있었고가지에밋되▁in▁them▁i▁다▁andashed▁i니▁st▁my▁un습저ment개▁had발▁branch▁some장▁develop했comm사여용하다▁changes를 사용하여 변경 사항을 저장했습니다.git stash
하지만 숨겨진 것들 중에서 매우 중요한 몇 가지 변화가 있었습니다.그 변경 사항들을 되돌릴 방법이 있습니까?
또한, 그 이후로 나는 숨긴 코드 파일 위에 몇 가지 변경 사항을 추가했습니다.
가능하면 새 지점에 저장된 변경 사항을 검색할 수 있습니까?
은 쉬운질대쉬한대은답운입니다.git stash apply
변경할 분기를 확인한 다음git stash apply
사용할 경우git diff
결과를 보기 위해.
변경 작업을 모두 마친 후에는apply
좋아 보이고 더 이상 재고가 필요하지 않을 것이 확실합니다. 그렇다면 사용하십시오.git stash drop
그것을 없애기 위해.
항상사용것권다니합장을할다▁suggest▁using를 사용하는 것을 제안합니다.git stash apply
git stash pop
은 다른점은입니다.apply
에서는 쉽게 할 수 .apply
또는 보기 위한 등.한다면pop
저장소를 추출할 수 있습니다. 즉시.drop
그것, 그리고 나중에 당신이 그것을 다른 곳(다른 지점)에서 추출하기를 원했다는 것을 깨닫는다면, 또는 그것으로.--index
또는 그런 것들, 그것은 그렇게 쉽지 않습니다.네가 만약apply
당신은 언제 할지 선택할 수 있습니다.drop
.
어쨌든 모든 것은 꽤 사소한 것이고, Git에 새로 온 사람들도 거의 비슷해야 합니다. (그리고 나머지는 건너뛸 수 있습니다!)
만약 당신이 더 발전하거나 더 복잡한 일을 하고 있다면 어떨까요?
기트스택을 사용하는 방법은 적어도 서너 가지가 있습니다.위의 내용은 "1번 길", 즉 "쉬운 길"에 대한 것입니다.
- 처음에는 깨끗한 지점에서 변경 작업을 하다가 잘못된 지점에서 변경 작업을 하고 있다는 것을 깨달았습니다.현재 변경사항을 다른 분기로 "이동"하기만 하면 됩니다.
이것은 위에서 설명한 쉬운 경우입니다.려달을 합니다.git stash save
플레인 (또는일반))git stash
같은 것).다른 분기를 체크아웃하고 사용합니다.git stash apply
이렇게 하면 Git의 강력한 병합 메커니즘을 사용하여 이전 변경 사항에서 Git를 병합할 수 있습니다.결과를 주의 깊게 검사합니다.git diff
를 사용하여 마음에 드는지 확인하고, 마음에 드신다면git stash drop
창고를 처분할 겁니다끝났습니다!
- 몇 가지 변경 사항을 시작하여 저장했습니다.그런 다음 다른 지점으로 전환하여 저장된 지점을 잊어버리고 더 많은 변경을 시작했습니다.
이제 이러한 변경 사항을 유지하거나 이동하여 저장한 내용도 적용할 수 있습니다.
실제로 할 수 있습니다.git stash save
시다, 서로로git stash
변경 사항의 "스택"을 만듭니다.그렇게 하면 두 개의 스테이시가 있는데, 하나는 방금 전에stash
— -을(를) 쓸 수도 stash@{0}
—그리고 철자가 하나stash@{1}
.사용하다git stash list
(언제든지) 그들을 모두 볼 수 있습니다.최신 버전은 항상 가장 낮은 번호입니다.이 신이당 때.git stash drop
그것은 가장 최근의 것을 떨어뜨리고, 그리고 그것이었습니다.stash@{1}
스택의 맨 위로 이동합니다. 약당신, 더더, 더, 더, 더, 만, 이, 더, ,입니다.stash@{2}
되다stash@{1}
등등.
넌 할 수 있다.apply
그리고 나서.drop
특정 저장소도 마찬가지입니다.git stash apply stash@{2}
등등. 를 삭제하면 큰됩니다.특정 스택을 삭제하면 숫자가 더 큰 스택만 번호가 매겨집니다.도 다시말만지, 가없것또한는하번호입니다.stash@{0}
.
많은 꽤 수 있습니다.stash@{7}
아니면 그것이었습니까?stash@{4}
잠깐, 방금 하나 더 눌렀는데, 지금은 8과 5가 됐어요?저는 개인적으로 이러한 변경 사항을 새로운 지점으로 이전하는 것을 선호합니다. 지점에는 이름이 있고,cleanup-attempt-in-December
나에게 더 큰 의미가 있습니다.stash@{12}
(계속)git stash
save-buffer를 수 , 내 는 " , 은든도될다움니붙집여이"라는 .WIP on branch
.)
고급형) 사용하셨습니다.
git stash save -p
조심해서 또는신게하중▁or게▁carefully.git add
및 -ed 및/는git rm
합니다. - 행하기 코특비 트편집 정의드 실에전 집▁-편비▁beforegit stash save
저장된 인덱스/스테이지 영역에 하나의 버전이 있고 작업 트리에 다른(다른) 버전이 있습니다.당신은 이 모든 것을 보존하기를 원합니다.그래서 이제 당신은git stash apply --index
다음과 같은 경우에 실패할 수 있습니다.Conflicts in index. Try without --index.
당신은 중다니입사용을 사용하고
git stash save --keep-index
"커밋될 항목"을 테스트하기 위해.이 답변은 이 답변의 범위를 벗어납니다. 대신 다른 StackOverflow 답변을 참조하십시오.
복잡한 경우에는 "깨끗한" 작업 트리에서 시작하여 현재 변경 사항을 적용하는 것이 좋습니다(원하는 경우 새 분기에서).그런 식으로 적용 중인 "어디선가"에는 다른 내용이 없으며 숨겨진 변경 사항을 시도하게 됩니다.
git status # see if there's anything you need to commit
# uh oh, there is - let's put it on a new temp branch
git checkout -b temp # create new temp branch to save stuff
git add ... # add (and/or remove) stuff as needed
git commit # save first set of changes
이제 당신은 "깨끗한" 출발점에 있습니다.아니면 이런 식으로 진행될 수도 있습니다.
git status # see if there's anything you need to commit
# status says "nothing to commit"
git checkout -b temp # optional: create a new branch for "apply"
git stash apply # apply stashed changes; see below about --index
기억해야 할 중요한 것은 "재고"는 약속이라는 것입니다. "지점에" 있지 않은 약간 "재미있는/이상한" 약속일 뿐입니다.그apply
운영은 커밋이 변경된 내용을 확인하고 사용자가 지금 어디에 있든 이를 반복하려고 합니다. 것입니다.apply
주변에 보관), 그래서 당신은 그것을 더 볼 수 있고, 혹은 여기가 잘못된 장소였다고 결정할 수 있습니다.apply
다른 방법으로 다시 시도하거나 뭐든지.
언제든지 재고가 있을 때 사용할 수 있습니다.git stash show -p
(이 단순화된 버전은 "최종 작업 트리" 변경 사항만 확인할 수 있으며 저장된 인덱스 변경 사항은 확인할 수 없습니다.--index
별도로 복원합니다.)git stash apply
를 제외하고, 이없.--index
지금 작업 트리에서 동일한 내용을 변경하려고 합니다.
이미 변경한 내용이 있는 경우에도 마찬가지입니다. 그apply
명령은 수정된 작업 트리에 스택을 적용하거나 적어도 적용을 시도합니다.예를 들어 다음과 같은 작업을 수행할 수 있습니다.
git stash apply stash # apply top of stash stack
git stash apply stash@{1} # and mix in next stash stack entry too
여기서 "적용" 순서를 선택하여 특정 순서로 적용할 특정 스택을 선택할 수 있습니다.그러나 병합 문서에서 경고하듯이 기본적으로 "기트 병합"을 수행할 때마다 다음과 같이 수행합니다.
Git merge를 커밋되지 않은 사소한 변경 사항과 함께 실행하는 것은 권장되지 않습니다. 가능한 경우 충돌이 발생할 경우 물러나기 어려운 상태가 될 수도 있습니다.
만약 당신이 깨끗한 나무로 시작해서 단지 몇 개를 하고 있다면,git apply
: 운영, 백기움 사용: 사용git reset --hard
상태로 끗한상돌가고아태로, ▁your것▁to▁get바는꾸것,,을고▁state▁change▁clean.apply
운영. (그래서 이런 복잡한 경우에는 깨끗한 작업 트리에서 먼저 시작하는 것이 좋습니다.)
최악의 경우는 어떻습니까?
여러분이 많은 고급 Git Stuff를 하고 있고, 여러분이 재고를 쌓았다고 가정해 봅시다.git stash apply --index
를 하만더이저재고적수없용다로 적용하는 더 합니다.--index
저장한 이후로 분기가 너무 많이 분산되었기 때문입니다.
이것이 무엇입니까?git stash branch
을 위한 것입니다.
다음과 같은 경우:
- 당신이 원본을 했을 때 당신이 했던 정확한 약속을 확인하세요.
stash
,그리고나서 - 새 분기를 만들고 마지막으로
git stash apply --index
변경 사항을 확실히 다시 생성하려는 시도는 효과가 있을 것입니다.이것이 무엇입니까?git stash branch newbranch
수행합니다. (그리고 성공적으로 적용되었기 때문에 저장소를 삭제합니다.)
에 대한 몇 가지 마지막 말--index
(도대체 뭐야?)
음, 그건…--index
설명하기는 간단하지만 내부적으로는 약간 복잡합니다.
- 변경 사항이 있는 경우 다음 작업을 수행해야 합니다.
git add
(또는 "스테이지") 그들 전에.commit
-잉. - 그러므로, 당신이 도망쳤을 때
git stash
두 파일을 모두 편집했을 수 있습니다.foo
그리고.zorg
그 중 하나만 무대에 올랐어요 - 그래서 당신이 재고를 돌려달라고 요청할 때, 그것이 좋은 것입니다.
git add
스added
사물과 그렇지 않은 것들git add
첨가되지 않은 것들즉, 만약 당신이add
-ed의foo
하지만 아닙니다.zorg
하기 전에stash
똑같은 설정을 하는 것이 좋을 수도 모릅니다.준비된 것은 다시 준비되어야 하며, 수정되었지만 준비되지 않은 것은 다시 수정되어야 하지만 준비되지 않았습니다.
그--index
에 깃발을 내미는.apply
이런 식으로 상황을 설정하려고 합니다.작업 트리가 깨끗하면 일반적으로 작동합니다.작업 트리에 이미 항목이 있는 경우add
-ed, 하지만, 당신은 여기에 문제가 있을 수 있다는 것을 알 수 있습니다.빼먹으면,--index
,그apply
전체 스테이징/분할된 설정을 유지하려고 시도하지 않습니다.대신, "stash bag"의 작업 트리 커밋을 사용하여 Git의 병합 기계만 호출합니다.준비/비준비 상태를 유지하는 데 관심이 없는 경우 제외--index
훨씬 더 쉽게 해줍니다.git stash apply
그 일을 하는 것.
git stash pop
모든 것을 제자리로 돌려놓을 것입니다.
댓글에 제안된 것처럼, 당신은 사용할 수 있습니다.git stash branch newbranch
실행 중인 것과 동일한 새 분기에 스택을 적용하는 방법:
git checkout -b newbranch
git stash pop
저장 내용 확인하기:-
git 재고 리스트
stash list에서 특정 stash no를 적용합니다.
gitstash stash 적용 stash@{2}
또는 첫 번째 저장만 적용하는 경우:-
갓 스태쉬 팝
참고: git stash 팝업은 stash 목록에서 stash를 제거하는 반면 git stash는 적용되지 않습니다.따라서 그에 따라 사용합니다.
이를 쉽게 하기 위해 다음 두 가지 옵션을 사용하여 스택을 다시 적용할 수 있습니다.
git stash pop
저장된 상태로 복원하지만 임시 저장소에서 저장소를 삭제합니다.git stash apply
저장된 상태로 복원하고 나중에 다시 사용할 수 있도록 저장 목록을 남겨 둡니다.
이 기사에서 깃대에 대한 자세한 내용을 읽을 수 있습니다.
Mac에서는 이것이 나에게 효과가 있었습니다.
git stash list(모든 stash 참조)
git stash list
git stash apply(스택 목록에서 원하는 숫자만 해당)
다음과 같이:
git stash apply 1
gitbash에서 단일 명령을 사용할 수 있습니다.
git stash pop
저장된 변경 목록 보기
git stash list
스택 변경 내용을 지우려면 다음
git stash clear
커밋되지 않은 변경 내용은 다음을 사용하여 저장할 수 있습니다.
git stash
그런 다음 다음을 사용하여 새 지점으로 체크아웃합니다.
git checkout -b
그런 다음 저장된 커밋을 적용합니다.
git stash apply
많은 사람들이 하는 말처럼git stash apply stash@{1}
현재 지점에서 변경 사항을 받을 것입니다. 왜 그것이 저에게 효과가 없는지 모르겠습니다.
나로서는git stash apply stashNumber
항상 작동합니다.
예를 들어, 만약 내가 1번 재고를 검색하고 싶다면, 이렇게 할 것입니다.git stash apply 1
PS: 사용할 수 있습니다.pop
대신에apply
유일한 차이점은apply
하지만 재고를 제거하지는 않을 것이지만 하는 것.pop
표시되는 재고 번호가 제거됩니다.
언급URL : https://stackoverflow.com/questions/19003009/how-to-recover-stashed-uncommitted-changes
'programing' 카테고리의 다른 글
gem 이벤트 시스템 치명적 오류: 'sl/ssl.h' 파일을 찾을 수 없음 (0) | 2023.06.01 |
---|---|
Android 에뮬레이터가 인터넷에 액세스할 수 없음 (0) | 2023.06.01 |
아이패드 웹 앱: 사파리에서 자바스크립트를 사용하여 가상 키보드를 감지합니까? (0) | 2023.06.01 |
추상 수업을 만드는 것이 가능합니까? (0) | 2023.06.01 |
iPhone의 Facebook 앱처럼 분할 보기 (0) | 2023.06.01 |