Я могу сказать получению по запросу мерзавца перезаписывать вместо слияния?

Насколько я вижу, 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, где я могу разветвить проект, экспериментировать немного, оставить его в покое в течение нескольких недель, но затем хотеть обновить его, не сохраняя мои изменения. В данный момент я удаляю свое ветвление и переветвление, которое не является лучшим подходом.)

27
задан random 18 November 2011 в 17:27
поделиться

3 ответа

Сначала переименуйте свою главную ветку во что-нибудь другое:

git branch -m master my_old_master

Затем создайте новую главную:

git checkout -b master someRemote

Самое замечательное в именах веток Git то, что они сами по себе не являются местами, они просто указатели на места (где «место» - это идентификатор фиксации SHA1).

33
ответ дан 28 November 2019 в 05:28
поделиться

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

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

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

Вы можете отменить свои изменения с помощью checkout:

git checkout myfile.h

восстановит myfile.h из индекса

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

4
ответ дан 28 November 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: