У меня есть это (мерзавец repo):
A--B--C--D ->master
\--E ->dev
И я хочу принести только фиксацию D
переходить dev
(D
не зависит от C
), так, чтобы:
A--B--C--D ->master
\--E--D' ->dev
Но D' не должен быть добавлен к ведущему устройству после слияния:
A--B--C--D--E' ->master
\--E--D'/ ->dev
Это вызвано тем, что я хочу принести только обновление файла, не имея необходимость загрязнять dev
с новыми файлами это C
(который представляет другого, большое слияние) добавляет.
Я предполагаю, что должен использовать git rebase
, но я не могу предположить как.
Используйте git cherry-pick с обновленной рабочей ссылкой
Вы хотите использовать git cherry-pick
. Я предполагаю, что ваш пульт называется «origin» (но замените реальное имя удаленного репо на «origin»). Я предполагаю, что у вас есть две локальные ветки с именами master
и dev
. Я предполагаю, что фиксация D находится на origin / dev
. Вы можете выбрать D следующим образом:
$ git fetch origin # Assuming the upstream remote's name is "origin"
$ git checkout dev # Check out your local "dev" branch
$ git cherry-pick $COMMIT_D # Replace "COMMIT_D" with the hash for commit D
Теперь у вас будут только изменения из коммита D в dev
.