git pull: заменить локальную версию удаленной версией
Есть кое-что, чего я не понимаю с помощью команды git pull
. У меня есть foobar
Git-репозиторий с двумя файлами с именами f1
и f2
. Сначала я клонирую этот репозиторий с помощью этой команды:
git clone [email protected]:foobar/foobar.git
Я делаю некоторые неправильные изменения в файлах f1
и f2
, добавляю их в индекс Git и затем фиксирую.
git add -A
git commit -m 'a test wrong modification'
Теперь я решаю, что эти изменения были неправильными, и я хочу заменить мои файлы на удаленную версию. Поэтому я использую git pull
для этого.
git pull
Already up-to-date.
Git отвечает, что проект уже обновлен. Что не так с тем, что я делаю? Как мне перейти к замене локальной версии на удаленную?
Ответы
Ответ 1
git fetch origin
git reset --hard origin/master
Вот хорошее объяснение о git pull git pull
Импорт команды git fetch
фиксируется из удаленного репозитория в локальное репо. Полученные коммиты хранятся как удаленные ветки вместо обычных локальных ветвей, с которыми мы работали. Это дает вам возможность просмотреть изменения, прежде чем интегрировать их в свою копию проекта.
Команда git pull <remote>
извлекает указанную копию пультов текущей ветки и немедленно объединяет ее в локальную копию. Это то же самое, что и git fetch <remote>
, за которым следует git merge origin/<current-branch>
. Поскольку он выполняет слияние, ваши коммиты по-прежнему существуют.
После выполнения fetch
вы можете reset создать рабочую копию с помощью команды reset. Hard
- игнорировать любые изменения в вашей локальной копии. git reset --hard origin/master
Ответ 2
В reset определенные файлы используйте git checkout
:
git checkout HEAD f1
git checkout HEAD f2
Вы также можете использовать подстановочные знаки (*), но я никогда не пробовал.
Аналогичный вопрос:
Как проверить только один файл из репозитория git?
Ресурс git checkout:
http://gitready.com/beginner/2009/01/11/reverting-files.html
Ответ 3
Вытягивание в основном заключается в объединении удаленного репозитория с вашим локальным. Короткий ответ - ничего плохого в настройке git, поскольку ваши последние удаленные изменения уже есть в вашем локальном репозитории. Если кто-то другой вносит изменения в удаленный репозиторий, когда притяжение становится удобным. Эти изменения вытащить и объединить в ваш локальный репозиторий после того, как вы сделаете тягу.