Подтвердить что ты не робот

Могу ли я сказать git pull для перезаписывания вместо слияния?

Насколько я вижу, git pull someRemote master пытается объединить удаленную ветку в мою.

Есть ли способ сказать: "Полностью отбросьте мои вещи, просто сделайте мне еще один клон удаленного", используя git pull? Я все еще хочу сохранить свой собственный репозиторий и сохранить его в истории, но после этой команды я хочу получить копию 1:1 некоторой ветки master.Remote после этой команды.

Чтобы уточнить, представьте, что есть 2 репозитория, RM и MY. Числа являются коммитами, и это предполагает только одну ветвь (мастер).

RM1 --- RM2 --- RM3 --- RM4 --- RM5 --- RM6 ...
|                        |
+-> MY1 --- MY2 --- MY3 -+-> MY4 --- MY5 --- MY6 ...

Итак, я запускаю свой собственный репозиторий как клон RM1. Затем я развиваюсь счастливо, и RM развивается счастливо, но мы никогда не разделяем нашу работу. После MY3 я понимаю, что моя ветка не так уж полезна, но RM4 довольно хорош. Поэтому я хочу, чтобы git pull RM4 в MY. Тем не менее, я не хочу, чтобы мои изменения в MY1-3 сохранялись, я хочу, чтобы MY4 был 1:1 копией RM4.

Тем не менее, я хочу сохранить свою историю, в идеале я хотел бы иметь набор изменений между MY3 и RM4 или между MY3 и RM2-4.

Он все равно должен оставаться моим хранилищем.

Возможно ли это?

(Это для проектов GitHub, где я могу развивать проект, немного экспериментировать, оставлять его в покое на несколько недель, но затем обновлять его, не сохраняя изменений. В настоящий момент я удаляю свою вилку и перекрёстки, это не лучший подход.)

4b9b3361

Ответ 1

Во-первых, переименуйте свою основную ветку в другое:

git branch -m master my_old_master

Затем создайте новый мастер:

git checkout -b master someRemote

Самое замечательное в именах ветвей Git заключается в том, что они сами не являются фактическими местами, они просто указывают на места (где "место" является идентификатором фиксации SHA1).

Ответ 2

Похоже, вы после git checkout, который отменит ваши локальные изменения в пути.

Вы можете вернуть свои изменения, используя checkout:

git checkout myfile.h

будет восстанавливать myfile.h из индекса

http://git-scm.com/docs/git-checkout

Ответ 3

Если вы хотите сохранить текущую главную ветвь, но зарегистрировать новую версию (зеркальное отображение удаленной ветки), вы можете:

  • зарегистрируйте драйвер фильтра слияния (только для этого слияния: a keepTheir один)
  • сделать a git pull --no-commit
  • проверьте, нет ли лишних файлов, которые необходимо удалить (файлы в вашем хозяине, которых нет в удаленной ветке)
  • совершить