Інші відповіді виглядали неповними.
Я спробував нижче в повному обсязі, і це спрацювало чудово.
ПРИМІТКА:
1. Зробіть копію свого сховища, перш ніж спробувати нижче, щоб бути в безпечній стороні.
Деталі:
1. Вся розробка відбувається у відділенні розробки
2. гілка qa - це саме та сама копія dev
3. Час від часу код dev потрібно перемістити / перезаписати у гілку qa
тому нам потрібно перезаписати гілку qa, з dev гілки
Частина 1:
З командами нижче, старий qa було оновлено до новішої версії:
git checkout dev
git merge -s ours qa
git checkout qa
git merge dev
git push
Автоматичний коментар для останнього натискання подано нижче:
// Output:
// *<MYNAME> Merge branch 'qa' into dev,*
Цей коментар виглядає зворотним, оскільки вищезазначена послідовність також виглядає зворотньою
Частина 2:
Нижче є несподівані, нові місцеві поступки в розробника, непотрібні,
тому нам потрібно викинути і зробити дев нетронутим.
git checkout dev
// Output:
// Switched to branch 'dev'
// Your branch is ahead of 'origin/dev' by 15 commits.
// (use "git push" to publish your local commits)
git reset --hard origin/dev
// Now we threw away the unexpected commits
Частина 3:
Перевірте все, як очікувалося:
git status
// Output:
// *On branch dev
// Your branch is up-to-date with 'origin/dev'.
// nothing to commit, working tree clean*
Це все.
1. старий qa тепер замінений новим кодом відділення Dev
2. локальний чистий (віддалене походження / dev не торкається)