2016-08-03 17 views
8

Bunun için bir cevap aramak için SO atıyordum. Herhangi bir cevap vermeyen bu eski iş parçacığına rastladım. Birinin bilmesi umuduyla bu ipliği geri almak!Git filtre dalı ve git alt ağacı arasındaki fark nedir?

Bana biri b/w git subtree ve git filter-branch farkını söyler mi? Bunun için orijinal soru aynı örneği kullanacağız:

git subtree split --prefix=some_subdir -b some_branch 

git filter-branch --subdirectory-filter some_subdir some_branch 

cevap

3

Evet, git subtree (a contrib kabuk) Stu Campbell tarafından "Using Git subtrees for repository separation" bölümünde açıklandığı gibi, repo yarık için kullanılabilir.

git subtree split --prefix=path/to/code -b split 
git push ~/shared/ split:master 
git rm -r path/to/code 
git commit -am "Remove split code." 

git filter-branch (bir yerli Git komutu) farklıdır aslında etkileyen sadece bu teslimleri toplayıp Repo tarihini yeniden yazıyor:

Sen olsa bölünmüş klasörde çoğaltılmış kodu kaldırmak gerekir Belirli bir alt dizinin içeriği.

Anlamı: filter-branch çalıştırıldıktan sonra git rm kodu yoktur. git subtree split yaptığı gibi aynı olmayan
git filter-branch taahhüt: Bu git alt ağacı şimdi Git resmi bir parçası olarak

+0

Bu günümüzde yanlış belirli ölçütlere eşleşmiyor şeyi (burada bir alt yolu) ("filtreler") siler –

+0

Fark, aynı zamanda, her bir kendi repo yapmak istediğiniz birkaç (n) alt klasörünüz varsa, gidilecek filtre süzgeciyle, önce n kez klonlamanız gerektiğine, alt ağaç ile git rm n kere gerekir. – Qiulang

İlgili konular