2013-03-22 29 views
5

EGit kullanarak Eclipse projem için bir git deposu kurmaya çalışıyorum. Ancak, depodan kök/proje dizini dışında sorun yaşıyorum.Eclipse - Kök dizini git deposundan hariç tutuluyor mu?

ProjectDirectory 
    src 
    war 
    etc 

ben depo src, war ve etc ancak üst dizini ProjectDirectory ihtiva içermesini istiyorum: O varlık, benim proje yapıya sahiptir. Bunun nedeni, projenin bir kopyasını çalışma alanımdaki ProjectDirectory2 klonlamak istersem, ikinci proje için depo şimdi ikinci bir kök dizin oluşturmaya çalışacaktır, ProjectDirectory. Ne yazık ki, EGit kullanarak bir proje için bir depo eklemeye çalıştığımda, yalnızca Proje klasörünün üzerinde Team> Share Project'i kullanabiliyorum gibi görünmekteyim ve bu yüzden de depodaki kök dizini dışarıda görmek için bir şey görmüyorum. Eclipse içinde.

Havuzda üst dizini EGit kullanarak nasıl atlayacağınıza dair öneriniz var mı? Eclipse'den her şeyi yapabilmeyi tercih ederim, ama eğer bir yol yoksa, deposu bu şekilde gitmenin bir yolu var, daha sonra git denetimini düzenli olarak git içinden kullanabiliyorsunuz. depo üst düzey dizini atlıyor? Çok teşekkürler.

cevap

2

Birden nedenlerle proje kök taahhüt etmelidir: Eğer projenin sadece alt dizinleri işlersen

  • , siz (proje kökünün altına gizlenen dosyaları ve klasörleri özleyeceğim örn .settings dizini ve diğerleri). Bunun da yapılması gerekir, aksi takdirde projeniz bilgileri kaçırır ve başka bir makinede aynı sonuçları almayabilir.
  • Aynı çalışma alanında aynı depoda aynı kez klonlamaya çalışmak isteğiniz, git dalları hakkında yeniden okumanız gerektiği gibi geliyor. Git'te, dallar arasında geçiş yapmak, göz açıp kapayıncaya kadar yapılır, böylece projenizin farklı özellikleri, sürümleri veya başka bir şekilde farklı sürümlerinde çalışırken dallar kullanılmalıdır.
  • Eclipse proje adı ve diskteki temel klasör adının aynı olması gerekmez (yeni bir proje oluştururken "varsayılan konumu kullan" onay kutusunu işaretleyin). Böylece, projenin ikinci bir kopyasını farklı bir adla kontrol edebilirsiniz.
  • Daha sonra çalışma alanınıza daha fazla proje eklerseniz (ör. Bir test projesi), bu ek projelerin içeriği, ilk projenin alt dizinleri ile karıştırılacağı için, bunları aynı git deposunda kolayca paylaşamazsınız. deposu.
+3

Bu nedenle, .settings gibi alt dizinleri dahil etmek istediğimi anlıyorum, ancak bunlar öneriyorum gibi öneride depoya eklenebilir. Ayrıca, çevrimiçi olarak gördüğüm hemen hemen her projenin (github gibi) üst dizini yapmak istemediğimi fark ettim (yani projeRepository/projectFolder/src yerine github'daki depoda sadece projectRepository/src gibi görünüyor)). Önerilerinizin avantajları varsa, neden tüm bu projeler bu şekilde yapılır? Hızlı cevabınız için teşekkür ederim. – golmschenk

+0

Örneğin: https://github.com/gwtbootstrap/gwt-bootstrap – golmschenk

+0

Hiç bir test projesi olmadıkları için varsayalım. Tam olarak bunu katkıda bulunduğum bir açık kaynak projesiyle gördüm. Ayrıca sadece alt dizinleri de işledik ve daha sonra test projesi için ek bir repo oluşturduk. Ancak, birden fazla projeden/projeden çekmek/çekmek, akwkward oldu (ve testler ana proje ile uyumlu değildi), bu yüzden sonunda tüm kodu yeniden organize ettik ve proje köklerini işledik: https://github.com/cgeo/ c-geo-opensource – Bananeweizen

2

Eğer maven projeniz varsa, normalde proje klasörü oluşturulmadan bir depo oluşturmak isteyebilirsiniz. Benim deneyimim için bu egit eklentisi ile mümkün değildir. Ancak git komut satırından kolayca yapılabilir.

First (bu da egit eklenti yaptıklarını belirtir) git klasörü içine Tutulma çalışma alanından mevcut Tutulma/maven projesi taşıyın:

mv myproject ~/git/ 

sonraki yeni git depo oluşturmak

cd ~/git/myproject 
git init 

Şimdi bir .gitignore dosyası oluşturun ve yeni deponuza yerleştirin (~/git/myproject/.gitignore). Bu bir için bir örnektir.gitignore dosyası:

# ignore all bin directories 
# matches "bin" in any subfolder 
bin/ 

# ignore all target directories 
target/ 

# ignore all files ending with ~ 
*~ 

# ignore eclipse directories and project files 
.settings/ 
.project 
.classpath 

Son olarak projeniz

git add * 
git commit -m "My initial commit message" 

Thats içeriğiyle yeni depo initalize. Artık tutulması yeniden başlatabilir ve projeyi yeni git deponuzdan yeniden gönderebilirsiniz. Tutulma ecit deponuza gidin ve 'exisiting project import' yazın.

+0

Eğer glob '*' .gitignore'daki herhangi bir dosya ile eşleşirse, 'git add *' başarısız olur. –

0

İşte benim çözümüm. özellikle zarif olmasa da - adımlar tüm basit, çalışır ve yaklaşık 10 dakika içinde yapılabilir: ~/git/project_repo_root

  • oluşturun: örn .. Yerel dosya sistemine dahil

    1. Klon uzak git repo senin gibi her zamanki gibi tutulma proje ..: ~/workspace/eclipse_project_root

    2. tutulma projeyi sil

    3. dosya yöneticisini aç ve tutulma taşımak (ancak dosya sistemi değil!)

      mv ~/git/project_repo_root/.git ~/git/eclipse_project_root

    4. : ~/git

      mv ~/workspace/eclipse_project_root ~/git/

    5. Taşı Tutulma proje kök klasörüne Repo klasöründen .git/klasör içine sadece ~/çalışma alanı/kökünden oluşturulan proje

      Bir kabuk kullanma/eclipse_project_root dosyasına gidin ve repoda istediğiniz tüm dosyalar için her zamanki komut satırı komutlarını kullanın:

      git add <abc>; .. commit; .. push

    6. Eclipse'e dönün ve Git Perspektifi'ne gidin ve "Bu görünüme varolan yerel Git repo'yu ekle" ye tıklayın. Çalıştığınız git repo'yu seçin ve tamam dediğinizde görünüm bu repo için bir girişle güncellenmelidir. Eğer görünümünde yerel repo gördüğünüzde

    7. , bunu doğru tıklayıp

    8. geri dönün (vs Java,) ana gelişme perspektifine İthalat Projeleri seçin ve orada projeyi görmelisiniz olabilir Paket gezgini görünümünde kök düğümde Git işareti.

    Bu noktada

    ~~~~~, size

    ben fark (burada anlatılan örneklerde ~/git kadar) taşınmadan hemen etmişti Tutulma proje klasörü görmelisiniz Bu, cevaplarımın olmasını istediğimden daha ayrıntılı, ancak bu özel sorun/çözüm için .. Bunu yapmak için daha basit bir yol bilmiyorum.

    Ve yukarıda yazılanlar için her zaman tutulması gereken projenin kök dizini içermelidir. Gerçekte bazı projeler/istemciler/etc, git repo'nun kök klasörü içermemesini gerektirir.emin yapılandırmak git repo penceresinin

    yılında> - Yani bu gibi bir çözüm gereklidir bazen

  • +1

    10 dakika içinde EGit'i kaldırabilir ve kullanmak için güzel bir Git istemcisi bulabilirim: D – anton1980

    +0

    Bu çözüm ile git projesi, tutulması projesiyle aynı dizinde. Varsayılan olarak EGit ile iki ayrı dizimize sahibiz, ancak proje dizinini keserken bunu yapmak imkansız görünüyor. –

    2

    Kısa cevap O Eğit + M2E

    hile yapıyor paylaşım projesi ile MÜMKÜN olduğunu kullanmayın veya

    işaretli olduğundan projenin ana klasör içinde depo oluşturmak ve yapım emin depo düğmesi oluşturmak tıklayın

    ana amacı, proje kökü

    proje kökü değil .git klasörünü oluşturmaktır.

    +0

    Shanyangqu - sen benim günümü kurtardın! – JavaTec

    İlgili konular