답변:
추적되지 않은 파일 (특히 .gitignore에있는 파일)을 포함하여 작업 디렉토리를 숨기려면이 cmd를 사용하려고합니다.
git stash --include-untracked
2018 년 5 월 17 일 업데이트 :
새로운 버전의 git git stash --all에는 추적되지 않고 무시 된 파일을 포함하여 모든 파일이 숨겨져 있습니다.
git stash --include-untracked더 이상 무시 된 파일을 건드리지 않습니다 (git 2.16.2에서 테스트).
아래의 원래 답변 :
경고, gitignore 파일에 디렉토리 / * 항목이 있으면 파일을 영구적으로 삭제합니다.
버전 1.7.7 부터 추적되지 않은 파일을 스테이징하지 않고 사용 git stash --include-untracked하거나 git stash save -u숨길 수 있습니다.
git add파일을 추가 ( )하고 추적을 시작하십시오. 그런 다음 숨기십시오. 파일의 전체 내용이 새 것이기 때문에 파일이 보관되며 필요에 따라 조작 할 수 있습니다.
git stash --include-untracked전에 git stash --all두 가지 이유에 대한 당신의 대답에. 먼저 2019 년에 OP의 질문에 더 잘 대답하고 둘째는 --all은 대부분의 사용자가 원하지 않는 것을 수행하기 때문에 .gitignored 파일을 모두 제거한다는 점에서 다행입니다.
git 1.7.7부터는 옵션 (또는 속기)을 git stash허용합니다 . 추적에 추적되지 않은 파일을 포함 시키려면 다음 명령 중 하나를 사용하십시오.--include-untracked-u
git stash --include-untracked
git stash -u
.gitignore보이지만 여전히 추적 ignoredDirectory되지 않는 ignoredDirectory/*것을 삭제합니다. 추적되지 않은 파일도 디렉토리 만이 아닙니다.
*.extension항목 에도 적용됩니까 ?
git1.8.3 -u( --include-untracked) 옵션은 추적 git stash show되지 않은 파일을 숨기고 팝업 할 수는 있지만 숨김 파일에있는 추적되지 않은 파일은 나열하지 않습니다
파일을 색인에 추가하십시오.
git add path/to/untracked-file
git stash
색인의 전체 내용과 기존 파일에 대한 단계적 변경 사항이 모두 숨김 상태가됩니다.
git add .어떤 이유로 그것을 고려하지 않았다
git bash에서 추적되지 않은 파일의 숨김은 다음 명령을 사용하여 수행됩니다.
git stash --include-untracked
또는
git stash -u
http://git-scm.com/docs/git-stash
git stash는 작업 공간에서 추적되지 않거나 커밋되지 않은 파일을 제거합니다. 그리고 다음 명령을 사용하여 git stash를 되돌릴 수 있습니다
git stash pop
파일이 로컬 작업 공간에 다시 배치됩니다.
내 경험
.classpath 및 .project 파일이 원격 저장소로 이동하지 않도록 gitIgnore 파일을 수정해야했습니다. 현재 수정 된 .gitIgnore를 원격 저장소에서 이동할 수 없습니다.
.classpath 및 .project 파일은 Eclipse에 중요합니다. 이는 내 Java 편집기입니다.
먼저 나머지 파일을 선택적으로 추가하고 준비를 커밋했습니다. 그러나 수정 된 .gitIgnore 파일과 추적되지 않은 파일이 표시되지 않으면 최종 푸시를 수행 할 수 없습니다. .project 및 .classpath는 보관되지 않습니다.
나는 사용했다
git stash
수정 된 .gitIgnore 파일을 숨길 수 있습니다.
.classpath 및 .project 파일을 숨김으로 사용했습니다.
git stash --include-untracked
작업 공간에서 파일을 제거했습니다. 이 파일이 없으면 일장에서 일하는 일을 할 수 없게됩니다. 커밋 된 파일을 원격으로 푸시하는 절차를 완료했습니다. 이 작업이 성공적으로 완료되면
git stash pop
이것은 동일한 파일을 내 작업 공간에 다시 붙여 넣었습니다. 이것은 같은 프로젝트에서 일식으로 일할 수있는 능력을 내게주었습니다. 이 브러시가 오해를 피하기를 바랍니다.
~/.gitignore.
다른 곳에서 말했듯이 대답은 git add파일에 대한 것입니다. 예 :
git add path/to/untracked-file
git stash
그러나 다른 대답으로도 질문이 제기됩니다. 실제로 파일을 추가하지 않으려면 어떻게해야합니까? 내가 알 수있는 한 그리고 다음은 작동 하지 않습니다 .
git add -N path/to/untracked/file # note: -N is short for --intent-to-add
git stash
다음과 같이 실패합니다.
path/to/untracked-file: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
그래서 어떻게 할 수 있습니까? 글쎄, 당신이 진정으로 파일을 추가해야 하지만 , 당신이 할 수있는 효율적 않은 추가로, 나중에 git rm --cached:
git add path/to/untracked-file
git stash save "don't forget to un-add path/to/untracked-file" # stash w/reminder
# do some other work
git stash list
# shows:
# stash@{0}: On master: don't forget to un-add path/to/untracked-file
git stash pop # or apply instead of pop, to keep the stash available
git rm --cached path/to/untracked-file
그런 다음 이전과 같은 상태 git add(즉, 추적되지 않은 파일;; 파일 path/to/untracked-file을 추적해야 할 다른 변경 사항) 로 작업을 계속할 수 있습니다.
이것에 대한 워크 플로우의 또 다른 가능성은 다음과 같습니다.
git ls-files -o > files-to-untrack
git add `cat files-to-untrack` # note: files-to-untrack will be listed, itself!
git stash
# do some work
git stash pop
git rm --cached `cat files-to-untrack`
rm files-to-untrack
[참고 : @mancocapac에서 코멘트에서 언급 한 바와 같이, 당신은 추가 할 수 있습니다 --exclude-standard받는 사람 git ls-files(그래서 명령 git ls-files -o --exclude-standard).]
... 쉽게 스크립팅 될 수 있습니다-별칭조차도 가능합니다 (zsh 구문으로 표시; 필요에 따라 조정) [또한 파일 이름을 단축 하여이 답변에서 스크롤하지 않고 화면에 맞도록했습니다. 원하는 다른 파일 이름으로 자유롭게 대체하십시오]] :
alias stashall='git ls-files -o > .gftu; git add `cat .gftu`; git stash'
alias unstashall='git stash pop; git rm --cached `cat .gftu`; rm .gftu'
후자는 쉘 스크립트 또는 함수로 더 좋을 수 있습니다. 단 , git stash원하지 않는 경우 및 / 또는 상단을 차지하는 대신 특정 숨김을 지정 하려는 경우 매개 변수를 제공 할 수 있습니다. 하나. 아마도 이것은 (위의 두 번째 별칭 대신) [공백없이 스크롤되도록 공백이 제거되었습니다. 가독성 향상을 위해 다시 추가] :popapply
function unstashall(){git stash "${@:-pop}";git rm --cached `cat .gftu`;rm .gftu}
참고 :이 형식에서는 숨김 식별자를 제공하려는 경우 작업 인수와 식별자를 제공해야합니다 (예 : unstashall apply stash@{1}또는unstashall pop stash@{1}
물론 .zshrc장기적으로 존재하기 위해 귀하 또는 이에 상응하는 것을 어느 것이 넣었습니까 ?
이 답변이 누군가에게 도움이되기를 바랍니다.
자식 버전 2.8.1 : 다음은 저에게 효과적입니다.
이름없이 수정 및 추적되지 않은 파일을 숨김으로 저장하려면
git stash save -u
수정 된 파일과 추적되지 않은 파일을 숨김 상태로 이름으로 저장하려면
git stash save -u <name_of_stash>
당신은 하나를 사용하고 있습니다 팝업 또는 적용 으로 다음 나중에.
git stash pop
git stash apply stash@{0}
git stash show그들을 보여주지 않았다. 시도했을 때 git stash apply"오류 : 숨김에서 추적되지 않은 파일을 복원 할 수 없습니다"라는 오류가 발생했습니다. 그러나 파일은 다시 한 번 추적되지 않은 것으로 표시되었지만 추적 된 파일의 변경 내용은 복원되지 않았습니다. 나는 그 파일을 숨김 상태에서 확인하여 개별적으로 복원 할 수 있다고 생각하지만이 솔루션은 내가 바라는 것이 아닙니다.
다음 을 수행하여 추적되지 않은 파일 만 숨길 수있었습니다 .
git stash save "tracked files I'm working on"
git stash save -u "untracked files I'm trying to stash"
git stash pop stash@{1}
마지막 파일은 추적 된 파일의 숨김을 표시하여 추적되지 않은 파일 만 숨김 상태로 둡니다.
git stash save -u바로 저장하지 않는 untracked파일을, 그것은 모두 저장 tracked하고 untracked. 나는 당신이하고있는 첫 번째 구원은이 경우 필요하지 않다고 생각합니다. atlassian.com/git/tutorials/saving-changes/에
아래 명령으로 간단하게 수행 할 수 있습니다
git stash save --include-untracked
또는
git stash save -u
git stash에 대한 자세한 내용은 이 게시물 방문 (여기를 클릭하십시오)
이 몇 가지 정답은 여기에 있습니다,하지만 난 그 새로운 전체 디렉토리에 대한 지적 싶었다 'git add path'것입니다 NOT 작업을. 새로운 파일이 많이 있다면 untracked-path 이 있으면 다음을 수행하십시오.
git add untracked-path
git stash "temp stash"
다음과 같은 메시지가 표시됩니다.
Saved working directory and index state On master: temp stash
warning: unable to rmdir untracked-path: Directory not empty
경우 비 추적 경로가 유일한 경로는 넌 보관 한, 숨김 "임시 숨겨 놓은"빈 숨겨 놓은 것입니다. 올바른 방법은 디렉토리 이름뿐만 아니라 전체 경로를 추가하는 것입니다 (예 : '/'로 경로를 끝내십시오).
git add untracked-path/
git stash "temp stash"
git에게 파일의 모든 내용을 준비 영역에 커밋하지 않고 파일이 존재한다고 알리면이 문제를 해결할 수 있다고 생각했습니다 git stash. Araqnid 는 전자를 수행하는 방법을 설명 합니다.
git add --intent-to-add path/to/untracked-file
또는
git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file
그러나 후자는 작동하지 않습니다.
$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
git stash --include-untracked
추가 한 파일과 준비하지 않은 파일도 저장되므로 가장 좋아하는 파일입니다.
새로 만든 파일과 함께 Sourcetree를 사용하는 동안 비슷한 문제가 발생했습니다 (스 태쉬에도 포함되지 않음).
처음에 'stage all'을 선택한 다음 새로 추가 된 구성 요소를 추적하여 숨김에 포함시킵니다.
나는 같은 기능을 숙고하고 싶었다. 그러나 시간이 지남에 따라 실제로 필요하지 않은 것으로 나타났습니다. 숨김 상태가되면 새 파일을 남겨 두는 것이 좋습니다. 그들에게 "나쁜"것은 일어날 수 없습니다 (다른 것을 체크 아웃하면 git은 오류가 발생하고 기존의 추적되지 않은 파일을 덮어 쓰지 않습니다)
일반적으로 git stash와 사이의 시간 프레임 git stash pop은 다소 작기 때문에 추적되지 않은 파일을 다시 빠르게 필요로합니다. 따라서 git status다른 작업을 수행하는 동안 파일이 표시되는 불편 함이 (와 사이 git stash의 git stash pop) 불편 함이 작업으로 인한 불편 함보다 작고 추적되지 않은 파일을 당신의 숨결.
git stash show아무 것도 반환하지 않으므로 파일이 비어있는 것처럼 보일 것입니다. → 떨어 뜨린 숨김을 복구하는 방법 )