추적되지 않은 파일을 어떻게 숨깁니까? 그러나 git

파일과 새 파일을 변경했으며 다른 작업으로 전환하는 동안 git stash를 사용하여 파일을 치우고 싶습니다. 그러나 git stash 자체는 기존 파일의 변경 사항 만 숨 깁니다. 새로운 파일은 내 작업 트리에 남아서 내 미래의 작업을 복잡하게 만듭니다. 이 추적되지 않은 파일을 숨기려면 어떻게합니까?



답변

추적되지 않은 파일 (특히 .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 1.7.7부터는 옵션 (또는 속기)을 git stash허용합니다 . 추적에 추적되지 않은 파일을 포함 시키려면 다음 명령 중 하나를 사용하십시오.--include-untracked-u

git stash --include-untracked
git stash -u

경고, gitignore 파일에 디렉토리 / * 항목이 있으면 파일을 영구적으로 삭제합니다.


답변

파일을 색인에 추가하십시오.

git add path/to/untracked-file
git stash

색인의 전체 내용과 기존 파일에 대한 단계적 변경 사항이 모두 숨김 상태가됩니다.


답변

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

이것은 동일한 파일을 내 작업 공간에 다시 붙여 넣었습니다. 이것은 같은 프로젝트에서 일식으로 일할 수있는 능력을 내게주었습니다. 이 브러시가 오해를 피하기를 바랍니다.


답변

다른 곳에서 말했듯이 대답은 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 save "tracked files I'm working on"
git stash save -u "untracked files I'm trying to stash"
git stash pop stash@{1}

마지막 파일은 추적 된 파일의 숨김을 표시하여 추적되지 않은 파일 만 숨김 상태로 둡니다.