Я знаю, что если я хочу, чтобы принудительно перезаписать локальный репозиторий с файлами из удаленного репозитория, я делаю это:Как я могу принудительно выполнить локальное репо с изменениями из удаленного репо, сохраняя при этом историю?
git fetch --all
git reset --hard origin/master
Проблема в том, что, когда я иду смотреть на историю местного репо , он полностью уничтожил историю и заменил ее копией истории удаленного репо.
Есть ли способ, которым я могу сделать эту насильственную перезапись, сохраняя при этом историю?
Например, если у меня есть файл в локальном репо со следующим содержанием:
- ContentA
- ContentB
- ContentC
И у меня есть один и тот же файл в удаленном репозитории со следующим содержанием:
- ContentA
- ContentC
- ContentD
После извлечения из удаленного репо я хочу, чтобы история показывала это для файла:
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentC
- ContentD
Я не знаю, т хочет, чтобы показать это (с принудительной перезаписи):
Version #1
- ContentA
- ContentC
- ContentD
И я не хочу, чтобы показать это (от слияния):
Version #1
- ContentA
- ContentB
- ContentC
Version #2
- ContentA
- ContentB
- ContentC
- ContentD
Возможно ли это?
Вы можете посмотреть на свой собственный драйвер git merge. – DavidN
Кроме того, ваш сброс --hard to origin/master перемещает вашего локального мастера на этот коммит, поэтому я думаю, что вы просто потеряли работу там. Похоже, вы хотите слиться, но особым образом. Мне просто интересно, не используете ли вы git так, как это делают все остальные, потому что вы можете легко увидеть обе версии с git. Обычно люди не хотят конкатенировать файлы, когда они объединяют их. Они хотят объединить их в слияние. – DavidN
Вы можете переустановить удаленный доступ на локальный, или вы можете потянуть пульт в отдельную ветвь, а затем сбросить --soft, stash и pop, или вишневое выделение отдельных коммитов с пульта. –