Я новичок в Git, и иногда я работаю над веткой функций (скажем, добавляя библиотеку A), а также работаю над программой B, которая ее использует (которую я называю веткой use, возможно, есть более подходящее слово) , Итак, в прошлом я имел две отдельные ветви: работайте над веткой функций, пока не получится, что она может работать, затем начните использовать API в ветке использования, объедините ветку функций и посмотрите, работает ли она. Если это не работает, я возвращаюсь к ветви функций, исправляю проблему, объединяю и повторяю. Это лучший способ сделать это?
Моя цель состоит в том, чтобы отделить ветвь функций от любой реализации, которая ее использует (хотя я полагаю, что даже это подлежит обсуждению). То, о чем я также подумал позже, - это предположить, что я редактирую ограниченное количество файлов, и я могу просто сделать «исправление» изменений в ветви использования и использовать «git checkout» в ветви функций, чтобы вернуть только изменения библиотеки.
То, что я действительно хочу, это работать в одном рабочем пространстве, но указать, что эти файлы принадлежат ветви A, и эти файлы принадлежат ветви B и могут фиксировать их отдельно. (Я могу представить себе реализацию, в которой вы указываете 2 (или n) ветви для объединения в псевдо ветку, предполагая, что вы не изменяете одни и те же файлы. Затем, когда вы изменяете файлы, находящиеся в одной ветви, вы можете зафиксировать только эти файлы в эта ветвь (и если вы изменяете новые файлы, вы должны указать, к какой ветке этот файл «принадлежит»). Насколько я знаю, это может противоречить тому, как работает Git, но я не знаю этого достаточно, чтобы рассказать. :)
Мысли
Разъяснение / Дополнение:
Это одна программа в одном репозитории (хотя решением могут быть два репозитория)
Есть две ветви, с которыми я сейчас работаю
Пример (на самом деле не то, что я делаю :)):
Я пишу программу для генерации случайного числа, а затем записать его в файл. Итак, моя основная программа находится в своей собственной ветке (то, что я называю своей веткой 'use'). Моя основная программа просто:
MyFileApi :: Write ("myfile", random ());
где random () - это какой-то системный API, который уже существует, но MyFileApi :: Write - это новая функция, которую я разрабатываю (поэтому моя программа использует эту новую функцию). В моей «ветке функций» я сказал заголовочный файл и реализацию для MyFileApi :: Write. Итак, я написал некоторую реализацию MyFileApi :: Write, но я хочу протестировать ее, используя мою новую программу записи файлов случайных чисел (вероятно, было бы лучше написать тесты специально для этого API, но я ленивый и тестирование в моей программе, которая использует код). Так что я делал слияние в моей MyFileApi :: Записать изменения в мою ветку 'use', тестировать его, видеть, что оно не работает, возвращаться к моей функциональной ветке, исправлять проблему, снова объединяться, повторять и т.д. ...