>>>>> Dmitry E Oboukhov writes:

 DS>> [...]
 DEO>>> все вроде хорошо, но в дереве конфигов переключать бранчи
 DEO>>> нельзя.  можно ли упростить процедуру попадания файла из бранча
 DEO>>> b2 в b1? то есть без промежуточного дерева и без обязательного
 DEO>>> переключения бранчей в рабочем дереве?

 DS>> git pull && git cherry-pick <commit> ?

 DEO> насколько я понял cherry-pick выколупывает из другого бранча
 DEO> коммит и кладет его в текущий бранч.

совершенно верно

 DEO> у меня задача обратная: имеется текущий бранч, из него надо взять
 DEO> файл и всунуть в другой бранч, но так, чтобы дерево на другой не
 DEO> переключать.

 DEO> я чего-то недопонял?

это я неправильно понял задачу.

 DEO> можно пример?

 DEO> вот у меня b1 содержит файлы a b c d b2 содержит файлы a b c d e f

 DEO> находясь в b2 я меняю файл a, хочу чтобы коммит ушел не только в
 DEO> бранч b2, но и в бранч b1, но переключать дерево на b1 мне нельзя
 DEO> (это конфиги работающей системы).

т.е. коммит выполняется на работающей системе?  тогда cherry-pick надо
делать в другом клоне или рабочей копии.  например,

ad...@server $ git commit -m "bla-blah-blah"
ad...@server $ git push remote-repo

u...@ws $ git pull remote-repo
u...@ws $ git checkout b1
u...@ws $ git cherry-pick <commit>
u...@ws $ git push remote-repo

ad...@server $ git pull remote-repo

В данном случае server - рабочая система, ws - какая-то другая машина,
remote-repo - общий remote, откуда pull-ятся и куда push-атся изменения.
Т.е. один и тот же репозиторий, одинаково называющийся в обоих рабочих
репозиториях.

С временной рабочей копией процесс может выглядеть таким образом:

ad...@server $ git commit -m "blah-blah-blah"
ad...@server $ mkdir /tmp/tmp-repo && pushd /tmp/tmp-repo
ad...@server $ export GIT_DIR=/path/to/repo/.git
ad...@server $ git checkout b1
ad...@server $ git reset --hard
ad...@server $ git cherry-pick <commit>
ad...@server $ git checkout b2
ad...@server $ unset GIT_DIR
ad...@server $ popd && rm -rf /tmp/tmp-repo

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

Можно оформить скриптом и назвать его git-cherry-punch-in :-)



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]
Archive: http://lists.debian.org/[email protected]

Ответить