Merkezi deponuzun çıplak olmasını istiyorsunuz. Üzerinde yaşadığı makinenin ismini söyle static
:
$ ssh static git init --bare /git/myproject.git
Bu çıplak depo, merkezi bir buluşma noktasıdır: gelişime değil itmeye ve çekmeye yöneliktir.
Gelişiminizi merkezi deponun klonlarında yapın:
$ cd ~/src
$ git clone static:/git/myproject.git
Çalışsanız bile static
, bir klonda çalışın:
$ git clone /git/myproject.git
Bu depo üzerinde çalışan tek kişi siz olsanız da, git belgelerinin konu dallarına ne dediği üzerinde çalışmayı alışkanlık haline getirin . Bunun acil bir yararı, temiz bir ana verileri tutmasıdır , yani merkezi ana dalınızdan her zaman birleştirme olmadan mevcut yerel havuzunuzun efendisine çekebilirsiniz.
Örneğin:
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
Bu büyük bir anlaşma gibi görünmeyebilir, ancak projeyi o dalda temsil edildiği gibi kısmen pişmiş bir durumda bırakma özgürlüğü verir veya havalı fikriniz bir flop olduğu ortaya çıkarsa, o dalı kolayca projenizde zaten diğer dallarda çalışan başka bir şeyi kırmak. Sonsuz ücretsiz mulliga!
Belki o gece eve gidip yeni bir özellik eklediniz. Ertesi sabah sen
$ git checkout master
$ git pull
yerel yöneticinizi merkezi depodaki bilgileri yansıtacak şekilde güncellemek için.
Ancak şimdi foo hatasını düzelttiğinizi ve ana dalınıza eklemeye hazır olduğunuzu varsayalım. İlk önce dün geceki değişikliklerle entegre etmek istiyorsunuz:
$ git checkout fix-bug-in-foo
$ git rebase master
rebase
Geçen geceki yeni özellikle üstünde foo hata düzeltildi sanki komutu depo görünmesini sağlar. (Bu biraz benzer svn update
, ancak daha esnek ve güçlü.)
Şimdi merkezi ustanıza almak için:
$ git checkout master
$ git merge fix-bug-in-foo
$ git push origin master
Efendiye özel muamele ettik, ama bu sadece geleneksel. Git deposunu kullanarak farklı depoların farklı dallarındaki çalışmaları kolayca paylaşabilirsiniz static
.