вы хотите, чтобы ваш центральный репозиторий был голым. Скажи, что машина, на которой он живет, называется static
:
$ ssh static git init --bare /git/myproject.git
этот голый репозиторий является центральной точкой встречи: он предназначен для толкания и вытаскивания, а не для разработки.
делаем вашу разработку на клонах центрального репозитория:
$ cd ~/src
$ git clone static:/git/myproject.git
даже если вы на static
работа в клон:
$ git clone /git/myproject.git
хотя вы единственный, кто работает над этим хранилищем, привыкайте делаете свою работу над тем, что Git документация называет тематические ветки. Немедленное преимущество этого заключается в том, что он держит Мастер очистки, то есть вы всегда можете вытащить из вашей центральной ветви master в мастер вашего текущего локального репозитория без слияния.
например:
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
это может показаться не большой проблемой, но это дает вам свободу покинуть проект как показано на этой ветке в частично приготовленное состояние, или если ваша крутая идея окажется провалом, вы можете легко выбросить эту ветку, не нарушая ничего в своем проекте, который уже работает на других ветвях. Бесконечные свободные муллиганы!
может быть, вы идете домой той ночью и добавил новую функцию. На следующее утро, ты
$ git checkout master
$ git pull
чтобы обновить локальный мастер, чтобы отразить то, что в Центральном репозитории.
но теперь скажите, что вы исправили ошибку foo и готовы включить ее в ветку master. Сначала вы хотите интегрировать его с изменениями прошлой ночи:
$ 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
так же легко.