В основном вам придется постоянно опробовать сервер для изменений в БД. Сервер не может позвонить клиенту, поэтому клиенту просто нужно постоянно спрашивать сервер, были ли изменения.
Обновление 17 мая 2018 года:
В новых версиях git теперь есть git stash --all
, который застревает все файлы, включая невоспроизводимые и проигнорированные файлы. git stash --include-untracked
больше не касается игнорируемых файлов (проверено на git 2.16.2).
Оригинальный ответ ниже:
Начиная с версии 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
выглядит так ignoredDirectory
, а не ignoredDirectory/*
, оно по-прежнему удаляет те, которые не отслеживаются. Даже не проверенные файлы не только каталоги.
– theUnknown777
13 April 2015 в 10:01
git
1.8.3 -u
(--include-untracked
) опция может сохранять и выталкивать неиспользуемые файлы в порядке, но git stash show
не перечисляет неиспользуемые файлы, находящиеся в тайнике
– xilef
12 May 2017 в 12:26
Я думал, что это можно решить, сообщив 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 будет ошибаться и не перезаписывать существующий невоспроизводимый файл)
И поскольку обычно временной интервал между git stash
и git stash pop
довольно мала, вам снова понадобится необработанный файл. Поэтому я бы сказал, что неудобство файла, появившегося в git status
, пока вы работаете над чем-то другим (между git stash
и git stash pop
) меньше, чем неудобства, вызванные работой, и необходимо внимание, которое в противном случае было бы чтобы попытаться добавить неиспользуемый файл в ваш кошелек.
В git bash скрепление необработанных файлов достигается с помощью команды
git stash --include-untracked
или
git stash -u
http://git-scm.com / docs / git-stash
git stash удаляет любые неиспользуемые или неработающие файлы из вашей рабочей области. И вы можете вернуть git stash с помощью следующих команд:
git stash pop
Это вернет файл в локальное рабочее пространство.
Мой опыт
Мне пришлось выполните модификацию моего файла gitIgnore, чтобы избежать перемещения файлов .classpath и .project в удаленное репо. Мне не разрешено перемещать этот измененный .gitIgnore в удаленном репо.
.classpath и .project файлы важны для eclipse - это мой редактор java.
Сначала я из всех выборочно добавленных остальной части файлов и совершенных для постановки. Тем не менее, окончательный толчок не может быть выполнен, если не изменен модифицированный .gitIgnore и не проверенные файлы. .project и .classpath не спрятаны.
Я использовал
git stash
для записи измененного файла .gitIgnore.
Для stashing .classpath и .project file, я использовал
git stash --include-untracked
, и он удалил файлы из моего рабочего пространства. Отсутствие этих файлов убирает мою способность работать в моем рабочем месте в eclipse. Я продолжил работу с завершением процедуры перенаправления переданных файлов на удаленный. Как только это было сделано успешно, я использовал
git stash pop
. Это вставило те же файлы обратно в мое рабочее пространство. Это дало мне возможность работать над тем же проектом в затмении. Надеюсь, это отбросит заблуждения.
~/.gitignore
.
– Antti Pihlaja
5 October 2015 в 19:47
Здесь есть несколько правильных ответов, но я хотел бы указать, что для новых целых каталогов '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
, и если untracked-path - единственный путь, который вы запихиваете, то при нажатии на кнопку «temp stash» будет пустой тайник. Правильный способ заключается в том, чтобы добавить весь путь, а не только имя каталога (т. Е. Конец пути с помощью «/»):
git add untracked-path/
git stash "temp stash"
Как было сказано в другом месте, ответ на git add
файл. например ::
git add path/to/untracked-file
git stash
Однако вопрос также поднят в другом ответе: что делать, если вы действительно не хотите добавлять файл? Ну, насколько я могу судить, вам нужно. И будет работать NOT :
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
или эквивалент, чтобы существовать долговременно.
Надеюсь, этот ответ полезен кому-то, все вместе объединяет в одном ответе.
Я смог спрятать только файлы без следа, выполнив:
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 --include-untracked
или
git stash save -u
Подробнее о git stash Посетите этот пост (Нажмите здесь)
Добавьте файл в индекс:
git add path/to/untracked-file
git stash
Все содержимое индекса, а также любые неустановленные изменения в существующих файлах, все превратят его в кошелек.
В git версии 2.8.1 следующие работы для меня.
Чтобы сохранить измененные и не проверенные файлы в тире без имени
git stash save -u
Чтобы сохранить измененные и не проверенные файлы в stash с именем
git stash save -u <name_of_stash>
Вы можете использовать любой поп и применять позже следующим образом.
git stash pop
git stash apply stash@{0}