Git.Объединить локальные изменения других в собственный репозиторий - PullRequest
0 голосов
/ 11 мая 2018

Некоторое время назад я приобрел проект у стороннего производителя, на которого я не влияю. Я передал Version 1 я получил в свой репозиторий без изменений.

После этого я внес изменения в их файлы и зафиксировал их тоже.

Недавно я получил архив с обновлениями, сделанными упомянутой выше третьей стороной.

Они начались с Version 1 Я получил ранее и сделал Version 2 изменяя много файлов.

Теперь мне нужно:

  1. Отслеживать сторонние изменения (Version 1 -> Version 2).

  2. Удобно объединить свои изменения в мой проект.

Я попробовал следующее:

  1. Создать ветвь update из начального коммита ветки master, равного Version 1.

  2. Отправьте полученные мной обновления в ветку update.

  3. Слияние update в `master.

У этого способа есть недостатки, которые я бы хотел решить:

Скажем, я изменился file_A некоторое время назад.

file_A также был изменен третьей стороной, и его изменения помечены самой последней датой в моем хранилище, потому что я только что зафиксировал их.

Когда я объединяю ветви, некоторые их изменения могут просто перезаписать мои, потому что они не конфликтуют (их коммит сделан после моего).

Единственное, что я могу сделать, - это вручную пересмотреть все измененные файлы.

Полагаю, что принятие Version 2 в прошлом (сразу после Version 1) решило бы мою проблему, вызвав конфликты в каждом файле, который мы оба изменили.

В целом, я думаю, что маркировка всех файлов, в которых мы оба сделали изменения, как конфликты, сработает в моем случае, но любые советы приветствуются.

Вот визуальный график того, что у меня сейчас:

master: V1---A1---A2
          \
update:    ------------V2

Чего я хочу достичь:

master: V1---V2---A1'---A2'

1 Ответ

0 голосов
/ 11 мая 2018

Первый

git fetch --all

тогда

git rebase nameofremotebranch

Ваша локальная ветвь будет обновлена ​​новыми коммитами с пульта, и ваши коммиты будут помещены поверх всего. Если они не конфликтуют. Затем исследуйте интерактивную перебазировку, потребуется ручная работа.

Я полагаю, вы уже сделали

git remote add (etc)

и добавил пульт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...