git reset после загрузки ftp - PullRequest
       9

git reset после загрузки ftp

0 голосов
/ 16 февраля 2011

У меня есть репозиторий, с которым я наконец-то корректно поработал вместе с несколькими другими разработчиками (мы переходим от убийства друг друга перезаписью FTP).

Один из разработчиков загрузил изменения на сервер, используя FTP,и я скачал эти изменения, переписав мои локальные папки.Я думал, что git распознает измененные файлы, однако это не так.на самом деле, git думает, что файлы не изменились.

Есть ли команда, которая может сказать git: «физически пересмотреть каждый файл на наличие изменений и посмотреть, есть ли они».На данный момент я не уверен, какие файлы были изменены после загрузки с FTP, и поэтому, когда я делаю git push / pull, он говорит, что изменений нет, хотя я знаю, что они есть.

Ответы [ 3 ]

1 голос
/ 25 февраля 2011

Посмотрите на эту ветку: Git Push to Production (FTP)

, которая содержит довольно превосходный инструмент с именем git-ftp, чтобы вывести ваши готовые производственные изменения на ваш сервер черезFTP.

https://github.com/resmo/git-ftp

Я использую его для отправки на FTP, когда я думаю, что сделанные мной изменения в разработке готовы для отправки на мой сервер.

0 голосов
/ 16 февраля 2011

Вы должны серьезно подумать о настройке правильного сервера git, поскольку передача изменений через FTP лишает смысла использование системы контроля версий, такой как git.Предполагая, что у всех есть SSH-доступ к серверу, его довольно просто настроить, вам просто нужно создать пустой репозиторий в каталоге на сервере, к которому у всех был бы доступ для чтения и записи.Также возможно выполнить настройку, не предоставляя всем доступ к оболочке.

Подробнее о настройке git-сервера можно прочитать в бесплатной Pro Git book , в которой подробно описываются несколько различных техник.Вы также можете использовать размещенный сервис git, если вы предпочитаете идти по этому пути.

При этом ответ Мэтта верен и, скорее всего, это и произошло: вы случайно переписали каталог, который использует git для отслеживания информации о локальномрепозиторий.

Если то, что есть в GitHub, все еще хорошо, вы можете сделать git fetch затем git reset origin/master, чтобы вернуть локальный репозиторий в состояние удаленного репо на GitHub, и он сохранит все локальные различия,Это приведет к потере любых локальных коммитов, которые не были переданы на GitHub, но не приведет к потере данных локально.Если вы сделали push-up на GitHub уже после случайной перезаписи, это, вероятно, не поможет (скорее всего, вы не смогли бы этого сделать без явного --force в push-сообщении).В качестве альтернативы вы можете сделать сброс на конкретный коммит, указав хеш коммита вместо «origin / master».

0 голосов
/ 16 февраля 2011

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

Это не лучший рабочий процесс для использования git, но если вам нужно объединить нагрузки FTP {up, down} с локальным контролем версий в git, вы можете установить переменную окружения GIT_DIR для ссылки на каталог за пределами вашего источника дерево (которое не будет перезаписано при загрузке нового снимка FTP), где git может отслеживать метаданные хранилища и истории.

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