У меня есть две ветви в git, master / и 1.7 /. Я вернул некоторые исправления из master / в 1.7 /, используя cherry-pick. (Я не использую слияние, потому что мне нужны только некоторые изменения.):
$ git checkout 1.7
$ git cherry-pick -x <initial commit SHA>..<master change 2 SHA>
Позже я объединяю 1.7 / обратно в master /, потому что я хочу, чтобы все изменения, внесенные в 1.7 / (кроме темы cherry-picks), были объединены обратно в основную линию:
$ git checkout master
$ git merge 1.7
Моя проблема заключается в том, что это повторно фиксирует вишневые кирки (первоначально от master /) в master / снова:
$ git log --oneline
8ecfe22 Merge branch '1.7'
fe3a60d master change 2 (cherry picked from commit f5cca9296e45d5965a552c45551157ba
9c25f53 master change 1 (cherry picked from commit 8fae2a68a356f5b89faa8629b9a23b23
f5cca92 master change 2
8fae2a6 master change 1
ffa10bf initial commit
В моем реальном хранилище это даже вызывало конфликты слияния.
Итак, мой вопрос, могу ли я избежать этого (и если да, то как)?
Полный список команд для воспроизведения этого поведения:
$ git init
<create Dialog.js file>
$ git add Dialog.js
$ git commit -am "initial commit"
$ git branch 1.7
<edit Dialog.js file>
$ git commit -am "master change 1"
<edit Dialog.js file>
$ git commit -am "master change 2"
$ git log
$ git checkout 1.7
$ git cherry-pick -x <initial commit SHA>..<master change 2 SHA>
$ git checkout master
$ git merge 1.7
$ git log