Birleştirme birden fazla gıt depoları
Bakalım benzer bir kurulum var demek
phd/code/
phd/figures/
phd/thesis/
Tarihsel nedenlerden dolayı, bu kendi git kendi depoları var. Ama işler biraz kolaylaştırmak için tek tek onları birleştirmek istiyorum. Örneğin, şu anda iki takım değişiklikler yapmak gibi bir şey yapmak zorunda kalabilirim
cd phd/code
git commit
cd ../figures
git commit
(Artık) iyi gerçekleştirmek için olurdu
cd phd
git commit
Bunu yapmanın birkaç yolu alt modüller kullanarak veya çekerek alt depoları var, ama benim aradığım biraz daha karmaşık. En azından mutlu olurdum
cd phd
git init
git add [[everything that's already in my other repositories]]
ama bu oyunu bir gibi görünmüyor. Bana yardımcı olabilecek git
bir şey var mı?
CEVAP
İşte here verdim bir çözüm:
Bunu doktora dizininin komple bir yedeğini önce: zor iş kaybetme yıl sorumlu tutulmak istemiyorum! ;-)
$ cp -r phd phd-backup
phd/code/code
phd/code
içeriği taşımak ve Tarih hep orada (bu kullanır. filter-branch komut gıt) olmuştur gibi görünüyor o zaman Düzelt$ cd phd/code $ git filter-branch --index-filter \ 'git ls-files -s | sed "s-\t-&code/-" | GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ git update-index --index-info && mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
phd/figures
phd/thesis
içeriği (sadecefigures
thesis
code
değiştirin) için aynı.Şimdi dizin yapısı bu gibi görünmelidir:
phd |_code | |_.git | |_code | |_(your code...) |_figures | |_.git | |_figures | |_(your figures...) |_thesis |_.git |_thesis |_(your thesis...)
Sonra kök dizine git deposu oluşturmak, her şeyi içine çekip, eski depoları kaldırın:
$ cd phd $ git init $ git pull code $ rm -rf code/code $ rm -rf code/.git $ git pull figures $ rm -rf figures/figures $ rm -rf figures/.git $ git pull thesis $ rm -rf thesis/thesis $ rm -rf thesis/.git
Son olarak, artık istediğin şey olmalıdır:
phd |_.git |_code | |_(your code...) |_figures | |_(your figures...) |_thesis |_(your thesis...)
Bu işlem için bir güzel yan bırakacaktırsürüm bilgisi olmayanyere dosyaları ve dizinleri.
Bu yardımcı olur umarım.
Sadece tek bir kelime ile ihtar: code
dizin zaten var bir code
alt dizin veya dosya, şeyler olabilir gitmek çok yanlış (aynı figures
thesis
elbette). Eğer durum buysa, sadece bu dizini yeniden adlandırmak veya tüm bu prosedür geçmeden önce dosya:
$ cd phd/code
$ git mv code code-repository-migration
$ git commit -m "preparing the code directory for migration"
Ve işlem tamamlandığında, bu son adım ekleyin:
$ cd phd
$ git mv code/code-repository-migration code/code
$ git commit -m "final step for code directory migration"
Eğer code
alt dizin veya dosya sürümü yaratılmışsa değil elbette, sadece git mv
yerine mv
kullanma ve git commit
s unut.
Bir birleştirme birden fazla SVN depol...
MySQL kullanarak GÜNCELLEME birden faz...
Birden fazla SVN Depoları ya da tek şi...
SQL sol vs birden fazla tablo satırı b...
Vim birleştirme birden fazla satır (ik...