2 EYLÜL 2009, ÇARŞAMBA
Nasıl bir git repo (klon değil) dosyaları, tarihi koruma taşımak için
Git bizim depoları bireysel projeler gibi kendi ağaç vardı, tek canavar svn depo bölümleri olarak başladı:
project1/branches
/tags
/trunk
project2/branches
/tags
/trunk
Belli ki, oldukça kolay birinden diğerine dosya taşımak için 'svn mv'. Git, her proje kendi deposundaki ve bugün project1 project2 bir alt dizine taşımak istendi. Böyle bir şey yaptım:
$ git clone project2
$ cd project2
$ git filter-branch --subdirectory-filter deeply/buried/java/source/directory/A -- --all
$ git remote rm origin # so I don't accidentally the repo ;-)
$ mkdir -p deeply/buried/different/java/source/directory/B
$ for f in *.java; do
> git mv $f deeply/buried/different/java/source/directory/B
> done
$ git commit -m "moved files to new subdirectory"
$ cd ..
$ git clone project1
$ cd project1
$ git remote add p2 ../project2
$ git fetch p2
$ git branch p2 remotes/p2/master
$ git merge p2
$ git remote rm p2
$ git push
Ama bu oldukça karmaşık görünüyor. Daha iyi bir yol genel olarak bu tür bir şey yapmak var mı? Ya da doğru bir yaklaşım benimsedik?
CEVAP
11 Temmuz 2012, ÇARŞAMBA
Eğer geçmişinizi aklı başında ise, taahhüt olarak yama ve yeni depo içinde uygulayabilirsiniz:
cd repository
git log --pretty=email --patch-with-stat --reverse --full-index --binary -- path/to/file_or_folder > patch
cd ../another_repository
git am < ../repository/patch
Ya da bir satır
git log --pretty=email --patch-with-stat --reverse -- path/to/file_or_folder | (cd /path/to/new_repository && git am)
(Exherbo’s docs alınan)
Bunu Paylaş:
Nasıl bir web sitesi wget kullanarak t...
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl div içeriğini daha büyük değil y...
Nasıl başka bir eleman içine bir öğe t...
Nasıl klon ya da Python içinde bir lis...