Git Bash поможет выбрать изменения и продолжить до конца - PullRequest
2 голосов
/ 29 мая 2019

У меня есть ветви A и B в Git. Здесь я выбираю изменения из ветви A в ветку B. Для этого я создал тег в ветке A и сделал 10 различных коммитов поверх него. Первый коммит был помечен в ветви A.

Команда Git cherry pick принимает в качестве входных данных хеши коммитов.

Для этого у меня есть список хэшей коммитов (SHA), начинающийся с тега (в ветви A) в такой переменной.

Оформить заказ филиал A

commithash="$(/usr/bin/git log --boundary --pretty=oneline ${tag_name}.. | sed -e 's/- //'| cut -d ' ' -f 1)"

echo $commithash  ---gives spaces delimited commit hashes below. 

3f899d3eebce23ce6a1efd3b73ea0b328c8cf3e1 2180e9e8a0a73a5313e70317a20360e3314b2568 f001ad3d03b6a4231d370a3b389d6edbd14db73b 66049c094a0780df7a518ba75d677213168e5211 3a6e53426e85f36b8fc3e19586c18d1ee0abf31b 0b2698bf67ea0c29f0e76fe110a0b89ccbfdecd2 8aed2c998dcd38ac5e01be5d1004d7130b1b2458 07a65386ad8883bf5f774541461cce0779d8b0d2 b57d0d1cea1cf8a151f1244c30b8f08eb7583926

Теперь я переключаюсь на ветку B

Для каждого хэша коммита в этой переменной я хочу запустить команду.

git cherry-pick --strategy-option theirs $(for-each-commit-sha)

При выполнении команды она успешна, за исключением нижеприведенного сценария, где она терпит неудачу.

A. если выходные данные для команды cherry pick имеют приведенный ниже вывод, скрипт завершится неудачно, и ни один из файлов не будет выбран вишней.

error: could not apply 34h5432.. adding dev text for cc in file
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

Ниже выводится:

git status 

On branch B
You are currently cherry-picking commit 34h5432...
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)

    deleted by us:   cc.txt

В этом сценарии я хочу запустить git add cc.txt или выполнить git add для всего, что упомянуто после «удалено нами:»

git add cc.txt 

git commit -m "adding file" 

Затем продолжайте выбор вишни для остальных хэшей коммитов в списке до последнего.

Выбор вишни нужно делать с последнего коммита ша до первого. В этом случае начинайте с b57d0d1cea1cf8a151f1244c30b8f08eb7583926 и заканчивайте 3f899d3eebce23ce6a1efd3b73ea0b328c8cf3e1

Как я могу это сделать?

commithash="$(/usr/bin/git log --boundary --pretty=oneline ${tag_name}.. | sed -e 's/- //'| cut -d ' ' -f 1)"

1 Ответ

0 голосов
/ 29 мая 2019

Во-первых, git cherry-pick может принимать диапазон коммитов : вам не нужно перечислять эти коммиты вручную.

Во-вторых, посмотрите, если git checkout --theirs -- cc.txt восстановит ваш файл перед добавлением и git cherry-pick --continue.

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