2015-09-16 13 views
8

Üzerinde çalıştığım şu andaki proje bir git deposuyla sınırlıdır. Benim Geçerli çalışma dizini şuna benzer:Git: Aynı deponun ayrı bir dalına bir alt dizine nasıl itilir?

dist/ 
    *distribution files 

src/ 
    *src files 

otomatik bir şey dağıtmak için kurulmuş bir Azure sunucu bizim repo 'dağıtmak' dalına itti var. Bu yüzden amaç, src dosyalarını master'a ve dist klasörünün içeriğini 'konuşlandırma' dalına itmektir.

Şimdiye kadar yaptığım şey, master'ı bölmek, src klasörünü silmek ve dağıtmak için bastırmadan önce dist klasörünün içeriğini köküne taşımaktır.

İdeal olarak reposları ayrı ayrı alabileceğimizi biliyorum, ancak şu anda bir seçenek değil. Bunu yapmanın daha kolay bir yolu var mı?

cevap

8

Bu git-subtree komutu bunun için harika çalışıyor. senin master şubesinden yapın: Eğer deploy dalını güncelleştirmek istediğiniz her komut

git subtree split --branch deploy --prefix dist/ 

Sadece koşmak.alt anahtarındaki (o andaki şubenin - muhtemelen master) her bir iletimini, deploy dalının köküne birleştirecek ve tam bir taahhüt geçmişini koruyacaktır. Yalnızca dist alt anahtarındaki değişikliklerin birleştirileceğini unutmayın. Bir taahhütte hem dist alt anahtarında hem de repodaki diğer dosyalar değişirse, yalnızca dist alt dizinindeki değişiklikler dahil edilir.

Zor bölüm yüklemektir. Anladığım kadarıyla komut git 1.7.11 ve üstü ile birlikte geliyor. Ancak, "contrib" alt ağacında bulunuyor, bu yüzden varsayılan olarak yüklenmedi. Sisteminizin paket yöneticisinde "git-subtree" yi arayın ve varsa paketi yükleyin. Değilse ya da git'in eski bir sürümünü kullanıyorsanız, bulduğum en kolay yol, yazarın repo'dan git-alttipini kurmaktır. Eğer yüklü aldıktan sonra docs açıklandığı gibi

git clone https://github.com/apenwarr/git-subtree.git 
cd git-subtree/ 
make install 

, onunla çeşitli serin şeyler yapabilirsiniz.

+0

Mükemmel çalışır. Teşekkürler dostum. – Lawren

+2

Aynı şeyi yapmanın bir yolu var mı, ancak yapı dosyaları ya da 'dist' '.gitignore'da olduğunda ve master dışında mı kalıyor? Açıklığa kavuşturmak için, yalnızca dağıtım şubesindeki dosyaları dağıtmak ve yalnızca master'daki src dosyalarını istiyorum. – Lawren

İlgili konular