Git — проверить новые коммиты из другой ветки

Я использую git для управления своими файлами точек, я использую как Linux, так и Mac OSX, поэтому я создаю отдельные ветки для этих двух и еще один мастер для общих настроек.

Когда я редактирую что-то общее и хочу сохранить изменения в другой ветке. Вот как я работаю на данный момент:

git checkout master
git commit ...
git checkout arch
git checkout master <file1>
git checkout master <file2>

Это большая работа. Могу ли я проверить фиксацию вместо файла, или есть еще более короткий путь, чем этот?


person Dzung Nguyen    schedule 03.07.2012    source источник


Ответы (2)


Вместо выбора вишни (см. его недостаток здесь), я бы предпочел объединить master в другие ветки.

См., например, "ветки Git. для работы над dev при внесении некоторых изменений в master".
Таким образом, вы знаете, что уже было интегрировано в ваши ветки из master.

person VonC    schedule 03.07.2012
comment
например, в ветке Arch у меня есть еще одна папка Arch, которой нет в master. Итак, если я объединю мастер в арке, это удалит ту папку, которая мне не нужна. Но я что-то неправильно понимаю? - person Dzung Nguyen; 03.07.2012
comment
@Vdt, он не должен удалять каталог, если только вы сначала не разместили этот каталог в master и не удалили его там. Если вы добавили этот каталог в свою ветку arch (то есть после ответвления от master), слияние из master не коснется его. - person VonC; 03.07.2012
comment
да, это именно та ситуация, в которой я был. Как я могу избежать удаления этих папок? - person Dzung Nguyen; 03.07.2012
comment
@Vdt Тогда вы можете выполнить слияние, а затем восстановить каталог. Это слияние запишет ссылку слияния между master и arch, и любое последующее слияние не затронет каталог. - person VonC; 03.07.2012
comment
Спасибо за Ваш ответ. Мне также нравится идея заставить все работать правильно, а не грязные советы и уловки, чтобы заставить это работать, но не правильно ;) - person Dzung Nguyen; 04.07.2012

Вы можете сделать git cherry-pick <changeset hash>. Например. git cherry-pick 1a15f41e2. Это применит коммит к текущей ветке. Если коммит существует только в удаленном репо, вам придется выполнить git fetch перед сбором вишни. Документация: http://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html

person valentinas    schedule 03.07.2012
comment
Вы также можете исследовать вариант -n для git cherry-pick, если хотите применить несколько коммитов как один. - person Marco Leogrande; 03.07.2012