git: Как переместить все коммиты одного определенного автора в отдельную ветку? - PullRequest
9 голосов
/ 14 апреля 2011

Я использую некоторый код, для которого не используется SCM + и получаю случайные обновления в виде всех файлов проекта, хотя только некоторые из них были изменены только немного. До сих пор я просто вносил свои собственные изменения в git-репо и решал эти «обновления» с помощью ручного git add -p сеанса, который становится все более раздражающим с количеством моих собственных изменений (тех, которые еще не определены для публикации). ), и, к счастью, я сделал git commit --author "the others" для вышеупомянутых "патчей", я хотел бы знать:

Как все коммиты, сделанные одним автором, можно разделить на новую ветку?

(Я не против переписать историю в этом случае, репо используется только мной)

Идеальное решение будет включать в себя слияние ветви других в мою после каждого «патча», но на данный момент может быть достаточным окончательное слияние в конце.


+ да, джедай чувствовал, что вы там съежились

Ответы [ 2 ]

6 голосов
/ 21 апреля 2011

Я недавно сделал это для кого-то:

git checkout -b other_work <sha1_of_where_to_rebase>
git log --reverse --author=others --format=%H <sha1_range> | xargs -n 1 git cherry-pick

Надеюсь, это поможет

2 голосов
/ 14 мая 2012

Я не совсем понимаю, что вы делаете, но проблема, которую вы описываете с помощью сторонней кодовой базы, называется "ветка поставщика". Вот как бы я справился с этим:

Сделать ветку для сторонней версии, например vendor. Я предполагаю, что ваша ветка называется master. Когда они публикуют новую версию, вы можете сделать следующее:

git stash # If you have any uncommitted files
git checkout vendor
tar -xzvf [new files]  # This might be unzip or whatever, rather than tar
git commit -am "Version xxx from upstream"  # Adjust commit message to suit
git checkout master
git merge vendor   # Bring changes into your branch (you could use rebase here if you prefer to keep all your changes on top of all their changes)
git stash pop # Restore your uncommitted files

пс. вместо git add -p я бы использовал git gui. Сначала я скептически относился к использованию графического интерфейса, но я не мог жить без git gui и gitk сейчас (или gitx на Mac).

...