Git на живом Windows Server - пытается вытащить из репозитория, но локальные файлы уже изменены - PullRequest
0 голосов
/ 10 июня 2010

Мой репозиторий Git размещен на github.com.Я хотел бы отправить обновления и тому подобное на github.com, а затем войти на свой сервер Windows и выполнить git pull, чтобы получить мои изменения (проверенные для работы на моем локальном компьютере. В идеале у меня должна быть другая установка сервера в качестве локального компьютеранастройки отличаются от реального сервера. Но я дешев.).

Кажется, что когда я пытаюсь выполнить git pull на сервере, файлы, похоже, изменяются каким-то образом с момента последнего нажатия.И поэтому я не могу получить обновление, так как git говорит, что мне нужно зафиксировать свои локальные (Windows server) изменения.

Как я могу использовать git так, как хочу?Или есть лучший способ?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

Используете ли вы Git GUI или Git Bash?

По какой-то причине графический интерфейс Git в Windows не имеет core.autocrlf, настроенного по умолчанию при клонировании репозитория, даже после попытки установить core.autocrlf в глобальной конфигурации с использованием Git Bash (это может быть настройка графического интерфейса или проблема среды, которая, если исправлено, может сделать GUI жизнеспособным вариантом).

Кроме того, по некоторым причинам графический интерфейс Git в некоторых случаях, кажется, считает, что лучше создать главную ветвь в новом репо, а не использовать существующие клонированные ветки репо. После того, как Git GUI создает эту основную ветвь, он выполняет извлечение этой главной ветви сразу после клона. Поскольку вы используете pull и у вас есть проблемы, это могло быть проблемой, только если вы изначально клонировали с помощью Git GUI.

Скорее всего, вы настроили core.autocrlf. Следующие шаги должны настроить репо для вас и обеспечить правильные настройки crlf ...

Шаги для клонирования без модифицированного мусора файлов:

Использование следующей команды в Git Bash из папки Windows клонирует хранилище в качестве полной копии без первоначальной проверки ветви.

git clone –n --no-hardlinks

Не проверяя ветку при клонировании, у вас теперь есть возможность проверить правильность настроек в файле .git / config для autocrlf перед проверкой ветки. Возможно, вы захотите добавить safecrlf просто для безопасности;) Чтобы обновить эти настройки, настройте параметры crlf, выполнив следующие команды из только что клонированного репозитория Windows с помощью Git Bash:

git config core.autocrlf true

git config core.safecrlf warn

Чтобы убедиться, что изменения были сделаны правильно, откройте ваш файл .git / config, и вы должны увидеть:

autocrlf = true

safecrlf = warn

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Вы хотите, чтобы autocrlf был установлен для ввода в вашем репозитории Linux ... значение true для вашего репозитория Windows. Кроме того, я использую только warn для safecrlf, вы можете использовать true.

Как только вы настроили конфигурацию crlf, вы можете, наконец, получить ветку в обычном режиме, используя git checkout.

Если в вашем новом локальном клоне Windows все еще есть измененные файлы, это, вероятно, связано с наличием CRLF вместо LF в вашем репозитории Linux. Это можно проверить с помощью шестнадцатеричного редактора файлов в вашем репозитории Linux и поиска, чтобы увидеть, присутствует ли 0D0A, или если все просто 0A, как и должно быть.

1 голос
/ 10 июня 2010

Возможно ли изменить флаг git core.autocrlf после клонирования хранилища?

Проблема 83 в форме проекта кода Google msysGit углубляется в эту тему.

Если это так, то создание нового клона должно решить проблему (до тех пор, пока флаг не затронут).

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