Buna neden olmak için muhtemelen ne yaptınız:
Bu tür bir şey, küçük bir programı patlatmaya gittiğinizde olur. Halihazırda çalışan bir şeyi değiştirmek üzeresiniz, böylece seviye-3 kalıcı kalıcılık büyüsünü yapıyorsunuz:
machine1:~/proj1> git init
ve eklemeye / eklemeye başlarsınız. Ama daha sonra , proje başlar daha karışmaya ve böyle bir şey yapmak böylece, (ev PC veya dizüstü bilgisayar gibi) başka bir bilgisayardan üzerine çalışmaları istiyorum
machine2:~> git clone ssh://machine1/~/proj1
ve klonlar ve her şey iyi görünüyor ve böylece makinenizdeki kodunuz üzerinde çalışıyorsunuz2.
Sonra ... taahhütlerinizi makineden2 itmeye çalışıyorsunuz ve başlıktaki uyarı mesajını alıyorsunuz.
Bu iletinin nedeni, çektiğiniz git repo'sunun sadece makine1'deki klasör için kullanılması amaçlanmış olmasıdır. Sen edebilirsiniz klonlamak gayet ondan ancak iterek sorunlara neden olabilir. Kodun iki farklı konumda yönetilmesinin "uygun" yolu, önerildiği gibi, "çıplak" bir repo kullanmaktır. Bir çıplak Repo herhangi bir iş yapılıyor olması için tasarlanmamıştır içinde bunun, birden kaynaklardan kaydedilmesini koordine etmek anlamına gelir. Bu nedenle en yüksek puanlı yanıt , sizden sonra .git klasörü dışındaki tüm dosyaları / klasörleri silmenizi önerir git config --bool core.bare true
.
En iyi cevabı açıklığa kavuşturmak : Bu cevaba yapılan yorumların çoğu, ".git olmayan dosyaları makineden1 silmedim ve hala makineden2 işleyebildim" gibi bir şey söylüyor. Doğru. Ancak, bu diğer dosyalar artık git deposundan tamamen "boşandı". Gidip git status
orada deneyin ve "ölümcül: Bu işlem bir çalışma ağacında yürütülmelidir" gibi bir şey görmelisiniz. Bu nedenle, dosyaları silme önerisi makine2'den gelen taahhüdün çalışacağı şekilde değildir ; kafanız karışmaz ve git'in bu dosyaları izlediğini düşünürsünüz. Ancak, hala makine1'deki dosyalar üzerinde çalışmak istiyorsanız, dosyaları silmek sorun olur, değil mi?
Peki, gerçekten ne yapmalısın?
Hala makine1 ve makine2 üzerinde ne kadar çalışmayı planladığınıza bağlı ...
Eğer makine1'den geliştirmeyi tamamladıysanız ve tüm gelişiminizi makine2'ye taşıdıysanız ... sadece en yüksek dereceli cevabın önerisini yapın: git config --bool core.bare true
ve sonra isteğe bağlı olarak, .git dışındaki tüm dosyaları / klasörleri silin. takip edilmiyor ve karışıklığa neden olması muhtemel.
Eğer makine2'deki çalışmanız sadece bir kerelik bir şeyse ve orada gelişmeye devam etmeniz gerekmiyorsa ... o zaman çıplak bir repo yapmakla uğraşmayın; sadece ftp / rsync / scp / vb. makinenizdeki * 2 * dosyalarınızı makinedeki * 1 * üzerindeki dosyaların üzerine getirin, makineden * 1 * gönderin / alın ve ardından makinedeki dosyaları silin * 2 *. Diğerleri bir şube oluşturmayı önerdi, ancak yaptığınız bazı gelişmeleri bir kerede başka bir makineden birleştirmek istiyorsanız, bunun biraz dağınık olduğunu düşünüyorum.
Hem makine1 hem de makine2 üzerinde geliştirmeye devam etmeniz gerekiyorsa ... işleri düzgün bir şekilde ayarlamanız gerekir. Repo'yu çıplaka dönüştürmeniz gerekiyor, o zaman çalışmanız için makinede1 bir klon yapmanız gerekiyor . Muhtemelen bunu yapmanın en hızlı yolu
machine1:~/proj1> git config --bool core.bare true
machine1:~/proj1> mv .git/ ../proj1.git
machine1:~/proj1> cd ..
machine1:~> rm -rf proj1
machine1:~> git clone proj1.git
machine1:~> cd proj1
Çok önemli: repo konumunu proj1'den proj1.git'e taşıdığınız için, bunu machine2 üzerindeki .git / config dosyasında güncellemeniz gerekir . Bundan sonra, değişikliklerinizi makineden yapabilirsiniz2. Son olarak, çıplak depolarımı iş ağaçlarından uzak, merkezi bir yerde tutmaya çalışıyorum (yani 'proj1.git'i' proj1 'ile aynı ana klasöre koymayın). Aynı şekilde yapmanızı tavsiye ederim, ancak yukarıdaki adımları mümkün olduğunca basit tutmak istedim.