Если я правильно понимаю вашу проблему, вы не можете нажать на удаленный репозиторий, потому что ваша локальная история не соответствует удаленной истории. Это то, что обычно происходит, когда вы локально изменяете фиксацию с помощью rebase
или с filter branch
.
Если вы нажмете локальные изменения на пульте дистанционного управления, вы перепишете часть или всю историю ваших проектов. Это означает, что каждый разработчик в вашем проекте попадает под удар, когда они пробуют git pull
, потому что сейчас их локальная история отличается от истории удаленного. В таком случае вы обычно хотите сообщить об этом своим со-разработчикам, потому что это может быть довольно запутанным, а также трудоемким, если они не знают, что сделал ваш filter-branch
.
Сказав это, я считаю, что вы ищете опцию --force
для git push
. Вы хотите запустить git push --force origin master
. Это, как следует из названия, перезаписывает все, что находится на пульте дистанционного управления, с вашей локальной историей git.
Пожалуйста, прочтите the docs, прежде чем вы это сделаете, и задайте больше вопросов, если у вас есть какие-либо проблемы, поскольку это потенциально разрушительная вещь.
Редактировать: У вашей коллеги есть два варианта, о которых я знаю. Они могут либо пойти по маршруту fetch/reset
, либо по маршруту rebase
.
Маршрут fetch/reset
связан с реестром локального репозитория вашего коллеги, чтобы он был точно таким же, как удаленный репозиторий. Это может быть сделано с:
git fetch origin && git checkout master
git reset --hard origin/master
rebase
маршрута предполагает применение коммитов вашего сослуживца на вершине недавно очищенные мастеров. В интерактивном режиме у них будет возможность просмотреть каждое сообщение до его включения. Если коммит содержит файл, который вам нужен, он может просто опустить его. Это может быть сделано с
мерзавца принести мерзавец перебазироваться -i происхождения/Master
Первый вариант был бы предпочтительнее, если вы оба согласны, что ваше хранилище должно быть каноническим, как это быстрее.Второй подход, в свою очередь, дает вам более тонкий контроль.
Вы можете проверить это так вопрос, который решает вопрос вытягивать после того, как сила, толкающая более тщательно: git pull after forced update
так, я сказать КОЛЛЕГЕ довести свою версию до даты с пульта дистанционного управления. Затем я перезаписываю пульт с этим параметром --force. И затем он делает git pull, чтобы обновить его версию? – gdbj
Я добавил несколько файлов в файл .gitignore и попытался вытащить их из этого репо. это сложно. – gdbj