git pull не перезаписывает локальные файлы при втором нажатии - PullRequest
1 голос
/ 07 января 2020

Использование NetBeans 8.1 в macOS Mojave для проекта PHP, который размещен в частном репозитории GitHub. Допустим, он называется foo-repo.

Я настроил свойства своего проекта в NetBeans, чтобы он мог Pu sh и Pull из foo-repo. Он подключается нормально, и об ошибках не сообщается.

В репо 3 филиала: master, devA, devB. Я работаю в ветке devA локально.

Когда я первоначально запускаю NetBeans и хочу обновить свои локальные файлы до ветви master, я щелкаю правой кнопкой мыши по проекту и go до Git> Удаленное> Вытащить. Если я проверю master -> origin/master, он скажет:

Ветвь origin/master будет объединена с текущей веткой devA.

Пока все хорошо. Кажется, это работает.

Однако, если я редактирую и сохраняю файлы локально , но не фиксирую или не извлекаю sh их У меня проблемы. Есть случаи, когда я хочу «сбросить» мои локальные файлы обратно к тому, что присутствует на master. В этом случае я go через вышеописанный процесс снова. Похоже, что NetBeans подключается к репо без сообщений об ошибках. Но ни один из моих локальных файлов, которые я редактировал / сохранял, не показывает содержимое ветки master. Вместо этого они показывают внесенные мной изменения, которые мне больше не нужны.

В качестве примера, скажем, я запускаю NetBeans и выполняю первоначальное извлечение. У меня есть файл foo.php, который содержит это:

$foo = 'bar';

Допустим, я редактирую его следующим образом:

$foo = 'xyz';
$newVar = 123;

Я сохраняю этот файл локально в NetBeans , но не передайте или закажите sh в репозиторий GitHub .

Я закрываю все свои открытые файлы.

Когда я затем делаю Git> Удаленный> Потяните и проверяйте master -> origin/master, он по-прежнему говорит:

Ветвь origin/master будет объединено с текущей веткой devA.

В нижней панели задач есть сообщение о том, что оно извлекается из foo-repo.

Но когда я open foo.php Я вижу это:

$foo = 'xyz';
$newVar = 123;

Это не то, что включено master.

Это ошибка / проблема в NetBeans? Или это неправильный процесс возврата в состояние ветки master с использованием git?

Правка - кто-то ответил, сказав

Вы не фиксируете измененный файл ... так что файл изменен, и на нем нет встроенной ревизии .... тогда вы запускаете pull. Тяга работает нормально, потому что нет никаких изменений от мастера, который изменяет файл. Если при касании файла произошли изменения в мастере, git будет его кашлять и предупредит, что операция перезапишет ваши изменения и сохранит sh ваши изменения или зафиксирует их.

Зачем мне фиксировать файл, содержащий работу, которую я не хочу в репо? Если одна из целей использования git состоит в том, чтобы перевести файлы в известное состояние, то мне нужно состояние, которое находится на master, и ветвь, в которой я хочу содержимое, существует (devA). Может ли git не справиться с этим?

Точно так же предложение использования git checkout foo.php хорошо, если вы только изменили foo.php. Что если вы изменили несколько файлов, закрыли их и не можете вспомнить имена файлов? Все это кажется нелогичным.

1 Ответ

0 голосов
/ 07 января 2020

Я думаю, что есть неправильное понимание того, что на самом деле означает pull . Pull не перезапишет файлы, которые вы изменили. Он будет (обычно) объединять контент ... вы хотите, чтобы файлы возвращались к тому, как они были на главном компьютере, - это операция, отличная от операции извлечения или объединения. Вы не фиксируете измененный файл ... поэтому файл изменяется, и на нем не создается ревизия .... тогда вы запускаете pull. Тяга работает нормально, потому что нет никаких изменений от мастера, который изменяет файл. Если при касании файла произошли изменения в мастере, git покажет его и предупредит, что операция перезапишет ваши изменения и сохранит sh ваши изменения или зафиксирует их.

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