Вы должны понимать, что репозиторий Git - это не просто дерево каталогов и файлов, но также хранит историю этих деревьев - которые могут содержать ветви и слияния.
При извлечении из репозитория вы скопируете все или некоторые из его ветвей в свой репозиторий. Затем они находятся в вашем хранилище как «ветви удаленного отслеживания», например, ветви с именами remotes/origin/master
или около того
Извлечение новых коммитов из удаленного репозитория ничего не изменит в вашей локальной рабочей копии.
Как правило, ваша рабочая копия извлекается из фиксации, которая называется HEAD
. Этот коммит обычно является наконечником одного из ваших местных филиалов.
Я думаю, что вы хотите обновить свою локальную ветвь (или, может быть, все локальные ветки?) До соответствующей удаленной ветки, а затем проверить последнюю ветку.
Чтобы избежать любых конфликтов с вашей рабочей копией (которые могут иметь локальные изменения), сначала вы должны очистить все, что не является версионным (используя git clean
). Затем вы проверяете локальную ветвь, соответствующую удаленной ветке, которую хотите обновить, и используете git reset
, чтобы переключить ее на извлеченную удаленную ветку. (git pull
будет включать все обновления удаленной ветви в вашей локальной ветке, которые могут делать то же самое, или создавать коммит слияния, если у вас есть локальные коммиты.)
(Но тогда вы действительно потеряете все локальные изменения - как в рабочей копии, так и в локальных коммитах. Убедитесь, что вы действительно этого хотите - в противном случае лучше использовать новую ветку, это сохранит ваши локальные коммиты. И используйте git stash
для сохранения изменения, которые еще не совершены.)
Edit:
Если у вас есть только одна локальная ветвь и вы отслеживаете одну удаленную ветку, все, что вам нужно сделать, это
git pull
из рабочего каталога.
Это выберет текущую версию всех отслеживаемых удаленных веток и обновит текущую ветвь (и рабочий каталог) до текущей версии удаленной ветви, которую она отслеживает.