Относительно 1 - это ваше решение + методы, которые лучше всего подходят для вашей команды, принимая во внимание количество людей, вносящих изменения в проект одновременно, и сколько людей должны работать "вв той же области, что и вы.
Как правило, чем меньше вы синхронизируете с основной веткой разработки, тем больше вероятность конфликтов, которые вам придется разрешать.
IМожно сказать, что я делаю ребаз из основной ветки разработки почти раз в день, иногда чаще, но это опять-таки зависит от того, что я объяснил выше.
Технически, если ветка создается из 'master'(это основная ветка разработки), например:
git checkout -b my_branch
И тогда вы делаете коммиты:
git commit -am "some commit"
git commit -am "another commit"
Тогда ничего не стоит делать следующее:
git fetch --all
git rebase origin/master
В этом случае ваши коммиты будут «последними» в истории (хотя их sha1 изменится, что не является проблемой, поскольку это только ваша ветвь), и ваша ветвь также будет содержать последнюю чанges from master.
Относительно 2
Если вы один / работаете в очень маленькой команде - тогда, вероятно, вы всегда можете зафиксировать непосредственно в master и не использоватьветвления вообще, хотя это не рекомендуемый способ использования git.
Я могу сказать для себя, что я использую ветвь функций для одной функции, обычно она "живет" в течение 1-3 дней.И затем я объединяю его с мастером через механизм pull-request - я открываю запрос pull, члены моей команды проверяют и утверждают мои изменения, а затем я объединяюсь обратно.
Этот способРабота имеет много преимуществ, но она выходит за рамки простых «голых» команд, предоставляемых git, и больше касается хороших практик работы в проектах с использованием git - чрезвычайно универсального и гибкого инструмента.Поэтому я предлагаю вам прочитать о запросах на включение и посмотреть, сможете ли вы принять их в своей команде