Есть ли способ сделать GIT Cherry-Pick ONTO другой веткой? - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над проектами с более ртутным рабочим процессом, где вы помещаете один коммит на рассмотрение и помещаете его отдельно.Github требует, чтобы у вас была ветка для этого.Таким образом, вы всегда должны выполнять этот избыточный танец «одна ветвь за коммит».

Так что, если я работаю над набором изменений, которые связаны, но не зависят, я предпочитаю работать с ними вниз по одной ветке, ожидая отзывов и посадки.например,

commit1 <--HEAD
commit2
commit3
commit4 <--master

, но мне придется записать их как

commit1 <--commit-one-branch
commit4 <--master

commit2 <--commit-two-branch
commit4 <--master

и т. д.

Длинный скучный процесс - создать ветку с коммитамиот одного до трех, а затем

git checkout -b worktree
git checkout -b commit-one-branch master
git cherry-pick commit-one
git push myrepo commit-one-branch
git checkout worktree

и т. д. И, очевидно, это становится еще страшнее, если вам придется вносить изменения в любой момент времени.

Что мне действительно нужно, так это git publish <commit> <parent> --branch <branch-name>, или что-то создающее новую ветвь, начинающуюся с <parent> и cherry-pick s <commit> сверху, и создающее ветку для вас, чтобы вы могли просто нажать на нее.

Я мог бы написать это достаточно легко, но я полагаю, что кто-то другой должен был подумать об этом до меня.Есть идеи?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Чтобы разделить ветвь на ветки с одиночной фиксацией от восходящей базы для параллельных запросов на получение,

for commit in `git rev-list @{u}..`; do
      short=$(git rev-parse --short $commit) # to make the list readable
      branchable_subject=`git log -1 --pretty=%s $short | tr -sc A-Za-z0-9 .`
      echo git branch -f $branchable_subject $short
      echo git rebase --onto @{u} $short^ $branchable_subject
done  # |sh
0 голосов
/ 08 октября 2018

но я думаю, что кто-то другой должен был подумать об этом до меня.

Я сомневаюсь в этом, потому что это не то, как используется Git, а не как pull-запросы / слияния-запросы выполнены.

Вы создаете только одну ветку и проталкиваете коммиты (в вашем случае один коммит, если вы действительно хотите) в удаленную ветку PR, вызываяобзор PR / MR.

После того, как обзор завершен и коммит объединен с целевой ветвью (скажем, master), вы можете переместить локальную ветку PR / MR поверх master и возобновить работу над ней.

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