Git değişikliklerini paylaşılan bir ağ sürücüsüne aktarın


90

Dört kişilik bir ekip yerel değişiklikleri paylaşılan bir ağ sürücüsüne göndermek için Git'i (özellikle Windows için Github ) nasıl kullanabilir?

Şu anda (Git olmadan) dosyaları ağ sürücüsünden yerel makinemize kopyalamamız, dosyaları düzenlememiz ve ardından paylaşılan ağ sürücüsüne yeniden yüklememiz gerekiyor. Bu, birçok hataya yol açabilecek zahmetli bir süreçtir, ancak Git'in bize yardımcı olabileceği bir şey gibi görünüyor.

Git'i ortak sürücüye kurup oradan gidebilir miyiz?

Yanıtlar:


124

Sizin için işe yarayan bir şey bulup bulmadığınızdan emin değilim, ancak bunu bir Windows ağ sürücüsünde nasıl yapacağıma dair bir yazım var:

http://tony.halcyonlane.com/blog/2011/09/22/Using-git-at-work-on-a-Windows-network-drive/

Bir cmd komut isteminden eşlenen sürücünüze geçin.

$ cd g:

Sonra yakında git deponuza cd yapın.

$ cd komut dosyaları

Ardından boş bir git deposu oluşturun. --Bare seçeneğini kullanmazsanız, sorun yaşayacağınız için bunu dışarıda bırakmayın.

$ git init - çıplak

Şimdi, henüz yerel bir git deponuz yoksa, yerel sürücünüze geri giderek yeni deponuzu istediğiniz yerde klonlayabilirsiniz.

$ c:

$ cd çalışması / komut dosyaları

$ git klon dosyası: // g: \ scripts

Klonladığınızda, otomatik olarak "kaynak" adlı bir uzak alırsınız ve yerel olarak herhangi bir değişiklik yaptığınızda güvenli bir şekilde saklamak için sunucuya itebilirsiniz.

$ git itme kaynağı yöneticisi

Zaten bir git havuzunuz varsa ve yalnızca ortak sürücüye göndermek istiyorsanız, bunu yerel git dizininizden yapabilirsiniz.

$ git uzaktan kaynak dosya ekle: // g: \ scripts

$ git itme kaynağı yöneticisi


1
Teşekkürler - bunu tam olarak ev ağımdaki kişisel bir proje için yaptım.
Martin Snyder

Bu adımları izledim ancak git push origin master hatasını çalıştırdığımda aşağıdaki hataları alıyorum: sh
üretilemiyor

Teşekkür ederim. Bu cevabı bulmak uzun zaman aldı
Simon Huckett

Ortak sürücüsünü eşleştirmeyen herkes için, gezinmek için sanal bir geçici sürücü oluşturmak için pushd (ve popd) var ( bağlantıya bakın )
LoJo

--Bare kullanmazsanız ne gibi problemleriniz olacak? Bir ağ sürücüsünde zaten çıplak olmayan bir depom var ve onu uzaktan kumanda olarak kullanmak istiyorum.
Fractaly

25

Ekibimiz şu anda tam olarak bunu yapıyor. Her geliştirici aşağıdakilere sahiptir:

  1. Yerel makinelerine Git yüklendi
  2. Kendi kişisel ortak drive'larına erişim ( L:)
  3. Bir ortak grup sürücüsüne ( V:) erişim

Sürücüde "uzak" depomuz (kullanılarak kurulur init -bare) V:ve herkesin kişisel L:diskinde bir klonu vardır . Tüm değişiklikler L:sürücüde yapılır ve sürücüye doğru itilir V:, bunlar daha sonra diğer geliştiriciler tarafından L:sürücülerindeki ilgili kişisel depolarına çekilir . Bu sorunsuz çalışır ve Git sunucusuna olan ihtiyacı azaltır.


Tamam harika! Önce yerel bir depo oluşturmam ve ardından paylaşılan sürücüde bu deponun uzaktan kumandasını kurmam gerekir mi?
user1549303

1
@ user1549303 - Biz böyle yapıyoruz. Yerel depoyu ( L:sürücü depomuz) kullanarak git initoluşturabilir ve ardından (veya a ve ardından bir itme v:) kullanarak uzaktan kumandayı ( sürücümüz olanı) oluşturabilirsiniz . git clone --baregit init --bareL:
eykanal

@eykanal - Ekibim şu anda eski, korkunç bir kaynak kontrol kitaplığı kullanıyor ve git'e geçmek istiyoruz. Mevcut kütüphanemizin bir dosyayı teslim aldığını ancak değişiklikleri teslim etmeyi unuttuğunu görmeme izin veriyor. Git ile tüm depolar yereldir, bu nedenle birinin "v:" ye basmayı unuttuğunu nasıl anlarsınız?
Kevin Buchan

4
@KevinBuchan - Yorumunuzu yeni bir soru olarak göndermenizi öneririm.
eykanal

1
İki geliştirici aynı paylaşılan depoya aynı anda (örneğin V :) göndermeye çalıştığında Git tepki verir mi? Eşzamanlı itme işlemleriyle ilgili herhangi bir sorun yaşadınız mı?
Jordi

2

Ağ sürücünüze başka bir uzak işaret ekleyebilirsiniz (git remote)

O zaman github ile yaptığınız gibi çekmeyi itebilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.