Можно ли с помощью Git выборочно применять изменения из одной ветки к другой?
В частности, я использую общедоступную dev
ветку для GitHub и частную master
ветку для развертывания. Когда изменения вносятся в одну ветвь, их нужно будет применить к другой, но некоторые строки кода должны оставаться разными. В моем случае это несколько классов css и лента.
Я новичок в Git, но я провел свое исследование:
Можно использовать
git merge --no-commit --no-ff
, за которым следуетgit mergetool
, чтобы выбрать то, что я хочу в случае конфликта. Проблема в том, что он работает только в случае конфликтов. Git не может автоматически объединиться, поэтому то, что я хочу сохранить другим, заменяется до того, как я получу возможность использовать свой mergetool.git difftool --cached
полезен, поскольку позволяет мне видеть различия, но мне нужно скопировать то, что я хочу сохранить, и вручную заменить его текстовым редактором, так как я не могу просто выбрать и сохранить, как с помощью mergetool.git cherry-pick
, похоже, применяет указанную фиксацию к другой, но то, что я хочу сохранить другим, может быть разбросано по разным коммитам, и эти коммиты могут не только включать в себя то, что я хочу сохранить другим. Я не вижу, чтобы это работало, если я не сделаю миллионы коммитов, которые свели бы меня с ума.
Также для ясности: Я не хочу, чтобы одна ветвь превращалась в другую, что, похоже, имеет место при слиянии. Мне нужны две отдельные ветки с соответствующими различиями и применяют изменения от одной к другой.
Есть ли лучший рабочий процесс, который позволил бы мне сохранить версию для разработки и развертывания, применив их изменения и сохранив некоторые различия? Я не против использования отдельных репозиториев или разных инструментов, если это приведет к решению.