ветвь слияния в мастер после того, как предыдущий коммит слил мастер, затем отменил его - PullRequest
1 голос
/ 14 мая 2019

, чтобы предоставить больше контекста вокруг того, что я пытаюсь исправить. несколько разработчиков работали в одной и той же ветке. в какой-то момент кто-то пытался объединить master с дочерней веткой, что-то пошло не так (не удалось построить проект и т. д., не уверен на 100%), но затем немедленно отменил коммит master слияния. дочерняя ветка теперь "завершена" и готова к запросу извлечения, и теперь она не будет сливаться чисто с главной. некоторые из ошибок git указывают что-то похожее на следующее?

CONFLICT (modify/delete): someFileName.cs deleted in HEAD and modified in master

мы попробовали следующее

(1)
- checked out/pulled latest master
- created a new branch
- cherry picked all relevant commits going forward

(2)
- performed a git reset to earliest commit
- cherry picked all relevant commits going forward

все приводят к тому же типу ошибки, упомянутой выше, при попытке слияния обратно с мастером.

Каков наилучший способ исправить эту ветку, чтобы она могла сливаться обратно в master?

1 Ответ

1 голос
/ 14 мая 2019

Если разработчик не возражает против того, чтобы очистить / перебазировать или слить, чтобы очистить свою работу и выполнить все это за одну ревизию, этот прием может сработать (этот прием не заботит предыдущий испорченная история, пока слияние работает нормально):

git checkout --detach feature-branch
git merge master "merge latest changes from master"
git reset --soft master # here is where the trick happens. after this command, all the changes that are related to the feature should be on index
git commit -m "Feature X: here is what the feature is about or what the change is about" # this revision has the whole thing on a single unique revision after master. No relation to the previous branch
# if you like the results, move the feature pointer
git branch -f feature-branch

А потом повеселись.

...