일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 버전관리
- 컴퓨터비전
- 네트워크보안
- 데이터과학
- 네트워크
- 자료구조
- 데이터분석
- 딥러닝
- Yes
- 프로그래밍
- I'm Sorry
- 코딩
- 사이버보안
- 보안
- 컴퓨터과학
- 머신러닝
- 2
- 인공지능
- 데이터베이스
- 자바스크립트
- 데이터구조
- 컴퓨터공학
- 프로그래밍언어
- 웹개발
- 소프트웨어공학
- 빅데이터
- 클라우드컴퓨팅
- 알고리즘
- 소프트웨어
- 파이썬
- Today
- Total
스택큐힙리스트
어떻게 Git에서 삭제된 stash를 복구할 수 있을까요? 본문
자주 git stash
와 git stash pop
을 사용하여 작업 트리에서 변경 사항을 저장하고 복구합니다. 어제 작업 트리에 일부 변경 사항이 있었는데 이를 숨겨놓고 다시 가져왔으며, 그 후에 다시 작업 트리에 변경 사항을 가했습니다. 어제의 숨겨놓은 변경 사항을 되돌아보고 싶은데 git stash pop
을 실행하면 관련 커밋에 대한 모든 참조가 제거되는 것 같습니다.
git stash
를 사용하면 .git/refs/stash에는 스태시를 생성하는 데 사용된 커밋의 참조가 포함되고 있음을 알고 있습니다. 그리고 .git/logs/refs/stash에는 전체 스태시가 포함되어 있습니다. 그러나 git stash pop
다음에는 이러한 참조가 사라집니다. 커밋은 여전히 저장소 어딘가에 남아있지만 어떤 커밋인지는 모릅니다.
어제의 스태시 커밋 참조를 쉽게 복구하는 방법이 있을까요?
답변 1
...또는 Windows용 PowerShell을 사용하여 다음과 같이 할 수 있습니다:
git fsck --no-reflog | select-string 'dangling commit' | foreach { $_.ToString().Split( )[2] }
이는 브랜치 또는 태그를 통해 더 이상 참조되지 않는 커밋 그래프의 맨 위에 있는 모든 커밋을 표시합니다 - 모든 분실된 커밋, 생성한 모든 stash 커밋이 그 그래프 어딘가에 있을 것입니다.
원하는 stash 커밋을 찾는 가장 쉬운 방법은 아마도 그 목록을 gitk
에 전달하는 것일 것입니다:
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
...또는 Windows 용 PowerShell을 사용하는 경우 emragins의 답변을 참조하십시오.
이렇게하면 리포지토리 브라우저가 시작되어, 어디에 있든 상관없이 리포지토리의 모든 단일 커밋이 표시됩니다.
만약 콘솔에서 별도의 GUI 앱보다 좋은 그래프를 원한다면 gitk
대신 git log --graph --oneline --decorate
와 같은 것으로 대체할 수 있습니다.
스태시 커밋을 확인하려면 다음과 같은 형식의 커밋 메시지를 찾으세요:
somebranch에서 작업 중인 commithash Some old commit message
참고: git stash
를 실행할 때 메시지를 입력하지 않았다면 커밋 메시지는 이 형식으로만 됩니다. (WIP on으로 시작)
답변 2
Git에서 삭제된 스태시를 복구하는 방법에 대해 알아보겠습니다. Git은 프로그래머들 사이에서 협업하고 버전 관리를 용이하게 해주는 도구입니다. 그중 스태시는 변경사항을 임시적으로 저장하는데 사용됩니다. 때로는 실수로 스태시를 삭제할 수도 있는데요, 지금부터 스태시를 복구하는 방법에 대해 자세히 알아보겠습니다. 이 글을 통해 프로그래머들에게 유용한 정보를 제공하고, 효과적인 SEO용어를 활용하여 더 많은 사람들에게 도달할 수 있도록 하겠습니다.첫째, Git 스태시 복구 방법을 살펴보겠습니다. 스태시는 변경사항을 임시적으로 저장하는데 사용되는 기능입니다. 스태시 명령을 올바르게 사용하면 중요한 작업이 완료되기 전에 변경사항을 저장하거나, 브랜치를 전환하기 전에 현재 상태를 잠시 저장할 수 있습니다. 실수로 스태시를 삭제했다면 걱정하지 마세요. Git은 이를 복구하는 명령어와 옵션을 제공합니다.
둘째, 스태시를 복구하기 위한 명령어는 git stash apply입니다. 이 명령어를 사용하면 가장 최근에 삭제된 스태시를 복구할 수 있습니다. 복구하려는 스태시가 여러 개라면, git stash apply stash@{n}을 사용하면 됩니다. 여기서 n은 복구할 스태시의 순서를 나타냅니다. 예를 들어 최근에 삭제한 스태시를 복구하려면 git stash apply stash@{0}을 입력합니다.
셋째, 스태시를 복구하기 위해 apply 명령어 외에도 pop 명령어를 사용할 수 있습니다. pop 명령어는 스태시를 복구하는 동시에 스태시 목록에서도 삭제합니다. 이를 통해 불필요한 스태시가 남아있는 상황을 피할 수 있습니다. git stash pop stash@{n} 형식을 사용하면 복구와 삭제를 동시에 처리할 수 있습니다.
넷째, 복구시 충돌이 발생하는 경우, Git은 자동으로 충돌을 해결하려고 시도합니다. 하지만 충돌을 수동으로 해결해야 할 수도 있습니다. 이때는 git mergetool 명령어를 사용하여 충돌을 해결합니다. 충돌 해결 후, git stash drop stash@{n} 명령어로 스태시를 수동으로 삭제할 수 있습니다.
이렇게 스태시를 복구하는 방법에 대해 알아보았습니다. Git을 사용하는 프로그래머라면 실수로 삭제한 스태시를 복구하는 기능을 잘 활용해야 합니다. 이 글을 통해 Git 사용자들이 보다 효과적으로 스태시를 복구하는 방법을 익힐 수 있도록 하겠습니다. Git 스태시 복구에 관심 있는 사람들에게 유용한 정보를 제공하고, SEO 추적 및 검색 최적화를 통해 더 많은 사람들에게 도달할 수 있도록 하겠습니다.