질문 : git stash에서 단일 파일 (또는 파일 변경)을 어떻게 추출합니까?
숨김 변경 집합을 해제하지 않고 git 숨김에서 단일 파일 또는 파일의 diff를 추출 할 수 있는지 알고 싶습니다.
누구든지 이것에 대한 몇 가지 제안 / 아이디어를 제공 할 수 있습니까?
답변
git stash 맨 페이지에서 다음 내용을 읽을 수 있습니다 ( "토론"섹션, "옵션"설명 바로 뒤에 있음).
숨김은 트리가 작업 디렉토리의 상태를 기록하는 커밋으로 표시되며 첫 번째 부모는 숨김이 생성되었을 때 HEAD의 커밋입니다.
따라서 stash (예 : stash@{0}
는 첫 번째 / 최상위 숨김)를 병합 커밋으로 처리하고 다음을 사용할 수 있습니다.
$ git diff stash@{0}^1 stash@{0} -- <filename>
설명 : stash@{0}^1
은 주어진 숨김의 첫 번째 상위를 의미하며, 위의 설명에 명시된 바와 같이 변경 사항이 숨겨지는 커밋입니다. stash@{0}
/ refs/stash
는 병합 커밋이고 비교하려는 부모를 git에게 알려야하기 때문에이 형식의 'git diff'(커밋 2 개 포함)를 사용합니다. 더 비밀스러운 :
$ git diff stash@{0}^! -- <filename>
또한 작동해야합니다 ( "범위 지정"섹션 rev^!
구문에 대한 설명 은 git rev-parse 맨 페이지 참조).
마찬가지로 git checkout 을 사용하여 숨김에서 단일 파일을 확인할 수 있습니다.
$ git checkout stash@{0} -- <filename>
또는 다른 파일 이름으로 저장하려면 :
$ git show stash@{0}:<full filename> > <newfile>
또는
$ git show stash@{0}:./<relative filename> > <newfile>
(주는 여기에 <전체 파일 이름> 프로젝트 (생각의 최상위 디렉토리에 파일 상대의 전체 경로 이름입니다 : 상대 stash@{0}
)).
셸 확장 stash@{0}
를 보호해야 할 수 있습니다 ( "stash@{0}"
또는 'stash@{0}'
.
출처 : https://stackoverflow.com/questions/1105253/how-would-i-extract-a-single-file-or-changes-to-a-file-from-a-git-stash
'개발관련 > Git' 카테고리의 다른 글
Windows 에서 Git Bash의 속도를 높이는 방법. (0) | 2021.12.06 |
---|---|
Git에서 단계화 되지 않은 변경 사항을 폐기하는 방법 (0) | 2021.12.06 |
.gitignore 및 "The following untracked working tree files would be overwritten by checkout" (0) | 2021.12.06 |
Git에서 한 파일의 작업 복사본 수정을 취소하는 방법 (0) | 2021.12.05 |
git clone --mirror와 git clone --bare의 차이점 (0) | 2021.12.05 |