На GitHub я использую одну учетную запись для своей компании, где живет «благословенный» код; Затем я поддерживаю личную вилку, где я работаю над вещами, которые еще не совсем стабильны. На моем локальном компьютере я работаю с обоими в одном репо, так что мастер - это благословенный код (и отправляет на учетную запись компании), а все остальные ветви - для моего форка. Вот часть моего .git / config:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:xiongchiamiov/fourU.git
[branch "hacking"]
remote = origin
merge = refs/heads/hacking
[branch "editor"]
remote = origin
merge = refs/heads/editor
[branch "problem-utils"]
remote = origin
merge = refs/heads/problem-utils
[branch "tests"]
remote = origin
merge = refs/heads/tests
[remote "trunk"]
fetch = +refs/heads/*:refs/remotes/trunk/*
url = git@github.com:xyztextbooks/fourU.git
[branch "master"]
remote = trunk
merge = refs/heads/master
Поскольку у меня есть разрешения на коммиты для репозитория компании, я могу просто объединить (или выбрать вишню) коммиты из одного филиала в другой и перенести его в нужное место. Теперь, отдельные репо, конечно, не нужны, но, поскольку это проект с открытым исходным кодом, я бы хотел, чтобы в «официальном» репо не было случайных веток, созданных моими касательными. Как только он достигнет точки, где он получит версионирование, появится ветвь 0.x с тегами для каждой версии (0.1, 0.1.1, 0.2 и т. Д.), Что особенно выгодно, потому что github автоматически создает тарболы файлов на каждом теге, отлично подходит для загрузки определенной версии на машину, которая не нуждается в полной истории.
Вы должны прочитать блог GitHub; у них было несколько хороших постов, описывающих их рабочий процесс развертывания, который, конечно, в значительной степени связан с git.