Проблема с GIT pull, перекрывающим предыдущий код - PullRequest
0 голосов
/ 18 августа 2011

Я новичок в GIT и вижу следующий сценарий:

push-файл ниже:

index.php

$name = "steve";

echo("good morning");
echo($name);

извлеките файл и затем удалите переменную $ name случайно.

echo("good morning");
echo($name);

Не осознавая этого, потяните и отправьте новый код на сервер. Проблема в том, что код сломан и больше не работает, GIT не будет запрашивать удаление строки. Есть ли способ решить такой сценарий?

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Решение здесь - знать, что вы меняете. В git это означает использование

git diff

, чтобы проверить, какой код изменился, прежде чем добавлять файл в индекс. Вы также можете использовать gitk для просмотра ваших изменений. Они будут отображаться в виде красной точки с пометкой «Локальные незафиксированные изменения, не помеченные для индексации».

Если проблема возникает из-за добавления целого файла в индекс, когда требуется только некоторые изменений, вот метод, который вы можете использовать для добавления отдельных фрагментов кода:

git add -p

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

0 голосов
/ 18 августа 2011

Для того, чтобы справиться с этим, Git должен был знать, какой контент вы используете.В вашем случае, Git должен знать, что удаление $name = "steve"; в файле .php приведет к ошибке.

Но это может быть прекрасно для простого .txt файла, в котором вы просто пишете текст.

Не pull переопределяет предыдущий код, но вы сделали,Вы удалили строку, вы сказали Git зафиксировать эту версию, вы извлекли эту версию из удаленного репозитория.И все прошло хорошо.

Лучший способ решить такой сценарий - избегать его путем тестирования вашего кода перед нажатием.


Если этот сценарий происходит несмотря на тщательное тестирование, вы, конечно, можете использовать Git для восстановления последней версии, которая была проверена и работает, используя

git checkout <SHA-HASH> -- index.php

, где <SHA-HASH> - этоcommit-ID последней хорошей версии index.php.

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