мой локальный репозиторий «не поставил» удаленные файлы, удаленный файл, как я могу вытащить отсутствующие файлы? - PullRequest
3 голосов
/ 25 января 2012

Я читал о git clean и git reset, но я не думаю, что они делают то, что мне нужно.Я попытался git pull, но это не помогло решить проблему (git pull приводит к: Already up-to-date.)

Мое удаленное репо в github в порядке.

Я просто скопировал все свои проекты railsот моего старого ПК до моего нового Mac, на котором также есть рабочая среда rails dev.

Все остальное двигалось нормально, но почему-то многие мои файлы БД / миграции отсутствуют локально.(Понятия не имею, почему ... ничего не пропало.)

Когда я cd в каталог и запускаю git status Я вижу то же самое:

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   deleted:    db/migrate/20110330064532_init_user_guids.rb
#   deleted:    db/migrate/20110330065055_init_master_report_key.rb
#   deleted:    db/migrate/20110331001956_create_recurly_accts.rb

В любом случае, яищу команду, которая будет перетаскивать все отсутствующие (не помеченные + удаленные) файлы из удаленного (исходного) в локальные, не удаляя ни одного из неотслеживаемых файлов локально, таких как моя база данных sqlite.

Или, может быть,Команда git, которая восстанавливает их из моего локального репозитория git, поскольку удаления «неустановлены»?

(я должен добавить, что у меня нет никаких других неизмененных изменений ... только те недостающие файлы, которые мне нужно заменить.)

Ответы [ 3 ]

6 голосов
/ 25 января 2012

Если единственными изменениями являются отсутствующие файлы, вы можете просто использовать git reset --hard HEAD, и это восстановит все обратно в первоначальное состояние.Однако он не удалит все неотслеживаемые файлы (для этого вам нужно git clean).Так что это должно быть безопасно для запуска, так как это восстановит ваши недостающие файлы, но оставит вашу базу данных без отслеживания в покое.

3 голосов
/ 25 января 2012

Попробуйте:

git checkout db/migrate/20110330064532_init_user_guids.rb

и т.д.

1 голос
/ 25 января 2012

Все, что говорит вам этот статус, это то, что файлы находятся в хранилище, но не в рабочей копии. Хранилище также прямо на машине с вами. git status думает, что вы сделали rm db/migrate/... как изменение, которое вы можете захотеть зафиксировать (как если бы вы редактировали файл). Чтобы отменить эти изменения, вы можете использовать git checkout db/migrate/..., чтобы получить неизмененные (в данном случае не удаленные) копии из вашего локального хранилища. Если у вас нет других ожидающих изменений, вы можете сделать это массово с помощью git reset --hard.

Вам не нужно получать объекты, представляющие эти файлы, из вашего удаленного репозитория, если только по какой-то темной магии эти объекты также отсутствуют. В этом случае простой git fetch перенесет объекты в локальное хранилище, и вы сможете восстановить свою рабочую копию, как описано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...