У меня есть изменения в файл, плюс новый файл, и хотел бы использовать Git в заначку положить их подальше, пока я переключаюсь на другую задачу. Но заначку собственно git сохраняет только изменения в существующий файл, новый файл остается в моем рабочем дереве, захламили мою будущую работу. Как мне спрятать это неотслеживаемый файл?
Чтобы спрятать ваш рабочий каталог, в том числе неотслеживаемый файлы (особенно тех, что находятся в рамках .гитюдного), то вы, вероятно, хотите использовать это cmd:
в Git тайник --включать-неотслеживаемые
Обновление 17 Мая 2018 Года:
Новые версии git'а теперь в Git тайник-все
что прячет все файлы, в том числе отслеживаются и игнорируемые файлы.
`в Git тайник --включать-неотслеживаемые больше не трогает игнорируемые файлы (проверено на гит 2.16.2).
Оригинальный ответ ниже:
*[Внимание, делать это будет навсегда удалить ваши файлы, если у вас есть каталог/ записи в файла. gitignore]1**
Начиная с версии 1.7.7 вы можете использовать команду git тайник --включать-неотслеживаемые " или " в Git тайник спасти -U` для заначки неотслеживаемые файлы без промежуточной их.
Добавить (в Git добавить
) файла и начать отслеживать его. Затем заначку. Поскольку все содержимое файла являются новыми, они будут спрятаны, и вы можете манипулировать им по мере необходимости.
Как ЖКТ 1.7.7, в Git тайник
принимает --включать-неотслеживаемые
вариант (или стенографирование -у
). Включить неотслеживаемый файлы в свой тайник, используйте одну из следующих команд:
git stash --include-untracked
git stash -u
*[Внимание, делать это будет навсегда удалить ваши файлы, если у вас есть каталог/ записи в файла. gitignore]1**
В bash ЖКТ, припрятать из неотслеживаемых файлов достигается с помощью команды
git stash --include-untracked
или
git stash -u
http://git-scm.com/docs/git-stash
в Git тайник удаляет любые неотслеживаемые или неподтвержденными файлы из рабочей области. И вы можете вернуться заначку ЖКТ с помощью следующих команд
git stash pop
Это позволит разместить файл в локальной рабочей области.
Мой опыт
Мне пришлось проанализировать изменения в мой файл гитюдного, чтобы избежать движения .classpath и .файлы проекта в репозиторий. Я не могу двигаться это изменить .гитюдного в удаленном РЕПО, как сейчас.
.classpath и .файлы проекта имеют важное значение для Eclipse - это моя Java редактор.
Я прежде всего выборочно добавлены мои остальные файлы и стремится к постановке. Однако, последний рывок не может быть выполнена, если только модифицированный .гитюдного поля и игнорируемых файлов, а именно. .проект и .classpath, который не припрятал.
Я
git stash
для припрятать модифицированный .файла.gitignore
Для припрятать .classpath и .файл проекта, я использовал
git stash --include-untracked
и он удалил файлы из моей рабочей области. Отсутствие этих файлов отнимает у меня возможность работать по месту моей работы в Eclipse. Я исходил с завершением процедуры для толкания переданные файлы на удаленные. Как только это было успешно сделано, я использовал
git stash pop
Этот вставлены те же файлы обратно в моей рабочей области. Это дало мне мой возможность работать над одним проектом в Eclipse. Надеюсь, что это кисти в сторону заблуждений.
Как уже было сказано в другом месте, ответ `в Git добавить файл. например:
git add path/to/untracked-file
git stash
Однако, этот вопрос также поднимался в другой ответ: Что делать, если вы не't действительно хотите добавить файл? Ну, насколько я могу судить, Вы должны. И следующий будет не работы:
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 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 добавить (а именно с неотслеживаемый файл под названием
Путь/к/игнорируемых-файл`; а также любые другие изменения, которые вы, возможно, имели отслеживаемых файлов).
Другой возможности для рабочего процесса это будет что-то вроде:
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, вы можете добавить --исключить-стандарт
к ГИТ ЛС-файлы командой (так,
ГИТ ЛС-файлы -это исключить-стандарт`).]
... которая может быть легко сценарию-даже псевдонимы будут делать (представлены в ЗШ синтаксис; отрегулируйте как нужно) [кроме того, я сократил именем так все это умещается на экране без прокрутки в этом ответе; не стесняйтесь, чтобы заменить другое имя по вашему выбору]:
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'
Обратите внимание, что последнее может быть лучше в качестве shell-скрипт или функция, чтобы позволить параметров подаваемого на в Git тайник, в случае, если вы не'т хотите,
поп, но
применить`, и/или вы хотите, чтобы иметь возможность указать конкретный товар, а не просто берут верх. Возможно, это (вместо второй псевдоним, выше) [пробел раздели, чтобы соответствовать без прокрутки; повторное добавление для лучшей читаемости]:
function unstashall(){git stash "${@:-pop}";git rm --cached `cat .gftu`;rm .gftu}
Примечание: В этой форме необходимо указать действие, аргумент, а также идентификатор, если вы'ре собирается поставлять тайник идентификатор, например, unstashall применять тайник@{1}
или unstashall поп тайник@{1}
Что, конечно, вы'd поставил в свой `.zshrc или эквивалент, чтобы существовать в долгосрочной перспективе.
Надеюсь, этот ответ поможет кому-то, сложив все вместе, все в один ответ.
На Git версии 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}
Последний соз заначку отслеживаемых файлов, таким образом оставив только неотслеживаемые файлы припрятано.
позвольте'ы предположим, новые и неотслеживаемый файл называется: "В вид.в JSON" по. если вы хотите изменить ветке, разместившись состояние вашего приложения, я вообще типа:
git add views.json
Затем:
git stash
И было бы припрятано. Тогда я просто сменю ветку
git checkout other-nice-branch
Вы можете просто сделать это с ниже команду
git stash save --include-untracked
или
git stash save -u
Для больше о git тайник перейти на этот пост (нажать здесь)
Существует несколько правильных ответов здесь, но я хотел бы отметить, что для всей новые каталоги, 'ГИТ добавить путь'
будут не работать. Так что если у вас есть куча новых файлов в неотслеживаемые-путь и сделать это:
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 stash --include-untracked
мой любимый, как это экономит также файлы, которые вы добавили и еще'т поставил их.
Я думал, что это может быть решена с помощью ГИТ говорит, что файл существует, а не совершить все содержимое его на плацдарм, а затем вызвать в Git тайник
. Araqnid описание Как сделать бывших.
git add --intent-to-add path/to/untracked-file
или
git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file
Впрочем, последнее не't работа:
$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
Я использовал, чтобы обдумать и желания те же функции. Но с течением времени, я заметил, что на самом деле это'т нужна. Когда вы делаете заначку, это's хорошо, чтобы оставить новые файлы. Ничего себе "плохо" с ними может случиться (когда вы проверить что-то еще, то git ошибки и не перезаписать существующий неотслеживаемый файл)
И так как обычно сроки Между в Git тайник
и в Git тайник поп-невелик, вы'll быть необходимости быстро снова неотслеживаемый файл. Так что я бы сказал неудобства в файл в
Git в статус, пока вы'работаете на что-то другое (Между
в Git тайник " и " в Git тайник поп`) меньше, чем неудобства, вызванные работу и внимание, которое он в противном случае стоить попробовать добавить неотслеживаемый файл в свой тайник.