中央リポジトリをむき出しにする必要があります。住んでいるマシンの名前は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 ..."
それは大したことではないように思えるかもしれませんが、部分的に調理された状態でそのブランチに表されているようにプロジェクトを残す自由を与えます、またはあなたのクールなアイデアがフロップであることが判明した場合、プロジェクト内で既に他のブランチで作業している他のものを壊します。無限の無料マリガン!
その夜家に帰って、新しい機能を追加したかもしれません。翌朝、あなた
$ 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
できます。