git stash
변경 사항을 숨기고 작업 디렉토리에도 유지 하는 명령이 있습니까? 기본적으로 git stash; git stash apply
한 단계에?
git stash && git stash apply
. 당신은 그 질문에 대한 답이 나의 것과는 다르다는 것을 알게 될 것입니다.
git stash
변경 사항을 숨기고 작업 디렉토리에도 유지 하는 명령이 있습니까? 기본적으로 git stash; git stash apply
한 단계에?
git stash && git stash apply
. 당신은 그 질문에 대한 답이 나의 것과는 다르다는 것을 알게 될 것입니다.
답변:
가치있는 것을 위해, 이것을 수행하는 또 다른 방법은 유지하려는 변경 사항을 준비한 다음 다음을 사용하여 모든 것을 숨기는 것입니다 --keep-index
.
$ git add modified-file.txt
$ git stash push --keep-index
위의 명령은 모든 것을 숨기지 만 파일은 작업 디렉토리에 준비되어 있습니다.
git-scm 의 공식 Linux Kernel Git 문서git stash
에서 :
이
--keep-index
옵션을 사용하면 인덱스에 이미 추가 된 모든 변경 사항이 그대로 유지됩니다.
git stash
그런 다음 git stash apply
(git stash && git stash apply
)는 파일을 숨기고 그 뒤에 즉시 숨길 수 있습니다. 결국에는 숨김 상태와 작업 디렉토리에서 변경 사항이 있습니다.
별명을 원하면 별명을 작성할 수 있습니다. 다음과 같은 것을 넣으십시오 ~/.gitconfig
.
[alias]
sta = "!git stash && git stash apply"
이 방법의 단점은 모든 파일이 보관되고 재생성된다는 것입니다. 이는 해당 파일의 타임 스탬프가 변경됨을 의미합니다. (을하기 전에 파일을 열었을 때 파일을 저장하려고 할 때 Emacs가 불만을 제기 git sta
하고 사용 중이 make
거나 친구 인 경우 불필요한 재 빌드가 발생할 수 있습니다 .)
git stash; git stash apply
과 git stash && git stash apply
?
&&
처음 0 상태 코드를 반환 한 경우에만 두 번째 명령 을 실행 한다는 것 입니다.
git stash save
인수와 함께 사용하도록 수정 한 다음 어떻게해야 git stash apply
합니까?
실제로 사용할 가능성이있는 답변의 작은 향상.
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
숨기는 것이 아니라 FWIW가 도움이 될 수있는 트릭이 있습니다.
git add -A
git commit -m "this is what's called stashing" (create new stash commit)
git tag stash (mark the commit with 'stash' tag)
git reset HEAD~ (Now go back to where you've left with your working dir intact)
그리고 지금 당신은 당신의 처분에 커밋 태그가 붙어 있습니다. git stash pop
어쨌든 할 수는 없지만 패치를 만들거나 파일을 재설정하는 등의 작업을 수행 할 수 있습니다. 작업 디렉토리 파일은 그대로 BTW로 남아 있습니다.
당신은 사용할 수 있습니다 git stash create
감춰 커밋 만든 다음 사용 마리화나에 저장하기 git stash store
:
git stash store $(git stash create) -m "Stash commit message"
더 편리하게하기 위해 자식 별칭에 저장할 수 있습니다.
git config --global alias.stash-keep '!git stash store $(git stash create)'
git stash-keep -m "Stash commit message"
이것이 모든 것을 하는 git stash push
것은 아닙니다 . 예를 들어, 커밋에 분기 이름을 추가하지 않습니다 (예 : " stash@{0}: On myBranch: Stash commit message
").
man git-stash
한다고 말합니다 -m <message>
. 최신 git의 변경 사항을 제외하고.