Ви хочете, щоб ваш центральний сховище був голим. Скажіть, машина, на якій вона живе, називається static
:
$ ssh static git init --bare /git/myproject.git
Цей голий сховище є центральним місцем зустрічі: це для підштовхування та витягування, а не розвитку.
Робіть розробку на клонах центрального сховища:
$ cd ~/src
$ git clone static:/git/myproject.git
Навіть якщо ви працюєте static
, працюйте в клоні:
$ git clone /git/myproject.git
Хоча ви єдиний, хто працює над цим сховищем, забувайте робити свою роботу над тим, що git-документація називає тематичними гілками . Безпосередня перевага цього полягає в тому, що він підтримує чистий майстер , тобто ви завжди можете перетягнути з центрального відділення головного майстра в поточний майстер місцевого сховища без злиття.
Наприклад:
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
Це може не здатися великою справою, але це дає вам свободу залишати проект , представлений на цій гілці, у частково приготовленому стані, або якщо ваша крута ідея виявиться флопом, ви можете легко викинути цю гілку без ламати що-небудь інше у вашому проекті, що вже працює в інших галузях. Нескінченно безкоштовні mulligans!
Можливо, ви підете додому в ту ніч і додали нову функцію. Наступного ранку, ти
$ git checkout master
$ git pull
оновити свого локального майстра, щоб відобразити те, що знаходиться в центральному сховищі.
Але тепер скажіть, що ви виправили помилку foo та готові включити її у свою головну гілку. Спочатку ви хочете інтегрувати його із змінами минулої ночі:
$ git checkout fix-bug-in-foo
$ git rebase master
rebase
Команда робить свій репозиторій вид , як якщо б ви виправили помилку Foo на вершині нової функції минулої ночі. (Це схоже svn update
, але більш гнучко і потужно.)
Тепер, щоб перейти до вашого головного майстра:
$ git checkout master
$ git merge fix-bug-in-foo
$ git push origin master
Ми ставимося до майстра як до особливого, але це лише умовно. Ви можете поділитися роботою над різними гілками різних сховищ через сховище git static
так само просто.