답변:
추적되지 않은 파일 (특히 .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
항목 에도 적용됩니까 ?
git
1.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
원하지 않는 경우 및 / 또는 상단을 차지하는 대신 특정 숨김을 지정 하려는 경우 매개 변수를 제공 할 수 있습니다. 하나. 아마도 이것은 (위의 두 번째 별칭 대신) [공백없이 스크롤되도록 공백이 제거되었습니다. 가독성 향상을 위해 다시 추가] :pop
apply
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
아무 것도 반환하지 않으므로 파일이 비어있는 것처럼 보일 것입니다. → 떨어 뜨린 숨김을 복구하는 방법 )