Git deposundan kökeni kaldırma


279

Temel soru: Bir git deposunu klonlandığı kaynaktan nasıl ayırabilirim?

git branch -a gösterileri:

* master
  remotes/origin/HEAD -> origin/master

ve tüm menşe bilgisini ve ilgili revizyonları kaldırmak istiyorum.

Daha uzun soru: Mevcut bir yıkım deposunu alıp ondan daha küçük git depoları yapmak istiyorum. Yeni git depolarının her biri yalnızca ilgili dalın tam geçmişine sahip olmalıdır. Repo kullanarak sadece istenen alt ağaç için budama yapabilirsiniz:

git filter-branch --subdirectory-filter path/to/subtree HEAD

ancak sonuçta ortaya çıkan repo hala başlangıçta atılan alt ağaçların kökeni / ana dalı altındaki tüm revizyonları içerir.

Ben ilk etapta yıkım deposunun ilgili alt ağacını klonlamak için git-svn için -T bayrağını kullanabileceğimin farkındayım. Bu daha sonra git filter-branch --subdirectory-filtergit repo kopyaları üzerinde birden fazla örnek çalıştırmak daha verimli olup olmayacağından emin değilim , ama her durumda, ben hala kökeni ile bağlantı koparmak istiyorum.

Yanıtlar:


476

Yeterince açıksözlü:

git remote rm origin

filter-branchSoruya gelince, sadece --prune-emptyfiltre dalı komutunuza ekleyin ve sonuçta ortaya çıkan deponuzda gerçekte herhangi bir değişiklik içermeyen tüm düzeltmeleri kaldıracaktır:

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD

1
Teşekkürler. O oldu --prune-emptyben eksik olduğunu.
awy

2
Hmm. eldeerror: Could not remove config section 'remote.origin'
Dima Lituiev

5

Mevcut kaynağı kaldırın ve proje dizininize yeni kaynak ekleyin

>$ git remote show origin

>$ git remote rm origin

>$ git add .

>$ git commit -m "First commit"

>$ git remote add origin Copied_origin_url

>$ git remote show origin

>$ git push origin master
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.