git iki dalda aynı anda çalışıyor


168

Birçok şubesi olan bir projem var.

Birkaç dalda aynı anda ileri geri gitmeden çalışmak istiyorum git checkout.

Tüm depoyu başka bir yere kopyalamanın yanı sıra bunu yapabilmemin herhangi bir yolu var mı?



1
Git 2.5+ (2. Çeyrek 2015) bunu yeni komutla resmen destekleyecek git checkout --to=<path>. Bkz aşağıda Cevabımı .
VonC

2
Aslında, komut git worktree add <path> [<branch>](Git 2.5 rc2)
VonC

Yanıtlar:


156

Git 2.5+ (2. Çeyrek 2015) bu özelliği desteklemektedir!

Bir git repo'nuz varsa cool-app, cd to root ( cd cool-app), çalıştırın git worktree add ../cool-app-feature-A feature/A. Bu, feature/Akendi yeni özel dizinindeki dalı denetler cool-app-feature-A.

Bu, eski bir komut dosyasının yerine contrib/workdir/git-new-workdir, bu "bağlantılı" çalışan ağaçların aslında ana repo yeni $GIT_DIR/worktreesklasörüne kaydedildiği daha sağlam bir mekanizma ile değiştirilir (böylece Windows dahil herhangi bir işletim sisteminde çalışır).

Yine, bir /path/to/myreporepoyu klonladıktan sonra (benzer bir klasörde ), farklı bağımsız yollardaki ( /path/to/br1, /path/to/br2) farklı dallar için çalışma saatleri ekleyebilirsiniz , bu çalışma ağaçlarının ana repo geçmişine bağlı olması ( --git-dirartık bir seçenek kullanmanıza gerek yok)

Daha fazla görün " Git ile Çoklu çalışma dizinleri? ".

Bir çalışma ağacı oluşturduktan sonra taşıyabilir veya kaldırabilirsiniz (Git 2.17+, Q2 2018 ile).


2
Bu yeni kabul edilen cevap olmalı, çünkü 2.5.X Windows için bile önerilen sürüm, i.imgur.com/oQvUhVl.png git-scm.com/download/win
RAnders00

40

Bir göz atın / contrib / Workdir / git-yeni-Workdir $ GIT_SRC_DIR .

varolan bir depoya işaret etmek için sembolik bağlantıları kullanan bir çalışma dizini oluşturmak için basit bir komut dosyası. Bu, farklı çalışma dizinlerinde farklı şubelere sahip olmasına izin verir, ancak hepsi aynı depodan.



2
Bunun eski olduğunu biliyorum, ama lütfen biraz açıklama yapabilir misiniz?
dav_i

@dav_i: Bu gibi mi?
Stefan Näwe

@ StefanNäwe Ah kafam karıştı - sabah çok erken ... cevabınızı link ile güncelledi.
dav_i



0

Git aynı anda birden fazla çalışma ağacını destekler. Daha fazla bilgi için, bkz:

Kimliklerle birden fazla çalışma ağacını desteklemenin ne kadar zor olduğu. Örneğin bu, çalışma ağacını desteklemek için JGet'te (eclipse ID) bir geliştirme isteğidir.

Bu nedenle, projeyi çok sayıda sorunla manuel olarak yönetmeniz (komut satırı) veya bir IDE'de tek bir çalışma ağacıyla çalışmanız gerekir.


Şu an itibariyle, bu cevap doğru değil. Lütfen cevabı güncelleyin.
narendra-choudhary

-2

Git , depo dizininde depo verilerinin yalnızca bir çalışan kopyasının olmasını desteklediği için değil .

İki farklı çalışma kopyasıyla aynı veri havuzunu teslim etmek / çekmek istiyorsanız, çıplak bir veri havuzu oluşturabilir ve iki çalışma kopyasına kopyalayabilirsiniz .

Ne zaman bir şey bitirirseniz, sadece "ana" çıplak depoya itmek .

Bazı ipuçları:

man git-clone

git clone --bare


3
"Git, depo verilerinin yalnızca bir çalışan kopyasına sahip olmayı destekler" -1 Doğru değil, hakkındaki cevaba bakın git-new-workdir.
sleske

Güzel fikir. Sadece iki kez klonlayın.
Serge Vinogradoff
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.