Насколько я вижу, git pull someRemote master
попытки объединить удаленное ответвление в мой.
Существует ли способ сказать, "Полностью отбрасывают мой материал, просто делают меня другим клоном удаленного" получения по запросу мерзавца использования? Я все еще хочу сохранить свой собственный репозиторий, и сохранять это - история, но я хочу иметь 1:1 копия основного ответвления someRemote после той команды.
Для разъяснения предположите, что существует 2 репозитория, RM и МОЙ. Числа являются фиксациями, и это принимает только одно ответвление (ведущее устройство).
RM1 --- RM2 --- RM3 --- RM4 --- RM5 --- RM6 ... | | +-> MY1 --- MY2 --- MY3 -+-> MY4 --- MY5 --- MY6 ...
Таким образом, я запускаю свой собственный репозиторий как клон RM1. Затем я разрабатываю счастливо, и RM разрабатывает счастливо, но мы никогда не совместно используем нашу работу. После MY3 я понимаю, что мое ответвление не является настолько большим, но что RM4 довольно хорош. Таким образом, я хочу git pull
RM4 в МОЙ. Однако я не хочу, чтобы мои изменения в MY1-3 сохранились, я хочу MY4 быть 1:1 копия RM4.
Однако я хочу сохранить свою историю, идеально я хотел бы иметь массив изменений между MY3 и RM4 или между MY3 и RM2-4.
Это должно все еще остаться мой репозиторий.
Это возможно?
(Это для проектов GitHub, где я могу разветвить проект, экспериментировать немного, оставить его в покое в течение нескольких недель, но затем хотеть обновить его, не сохраняя мои изменения. В данный момент я удаляю свое ветвление и переветвление, которое не является лучшим подходом.)
Сначала переименуйте свою главную ветку во что-нибудь другое:
git branch -m master my_old_master
Затем создайте новую главную:
git checkout -b master someRemote
Самое замечательное в именах веток Git то, что они сами по себе не являются местами, они просто указатели на места (где «место» - это идентификатор фиксации SHA1).
Если вы хотите сохранить текущую главную ветвь, но зарегистрировать новую версию (зеркальное отображение удаленной ветви), вы можете;
keepTheir
one)git pull --no-commit
Похоже, вы прошли через git checkout, который отменит ваши локальные изменения в пути.
Вы можете отменить свои изменения с помощью checkout:
git checkout myfile.h
восстановит myfile.h из индекса