2010-02-11 11 views
17

Bir meslektaşımın depolarında (dosya sistemi aracılığıyla) erişebildiğim bir depo var ve bu stoku depoda bir şubeye çekmek istiyorum.Uzak bir repodan yerel bir şubeye bir stant getirebilir miyim?

 
% git ls-remote ~alice/work/repo/ stash 
3ccc82fb1ee0e7bde1250c7926d333ce21c109c0  refs/stash 

Bunu almaya çalıştığınızda Ama git me

 
% git fetch ~alice/work/repo stash:new_branch 
remote: Total 0 (delta 0), reused 0 (delta 0) 
error: unable to find 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 
fatal: object 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0 not found 

ben uzaktan zulası getirebilir bir yolu var mı "yapamaz ... 3cc82 bulmak için" söyler?

cevap

8

Güncelleme: Orijinal Yazarın soruya doğrudan cevap:

git send-pack ./ 3ccc82fb1ee0e7bde1250c7926d333ce21c109c0:refs/heads/tempbranch 

'tempbranch' uzaktan gelen son zulası (zula @ {0}) olacaktır. Ne yazık ki, reflogun uzak şubelerden alındığını düşünmüyorum, bu yüzden kaynak repolarına erişiminiz olmadıkça, diğer stantlara ulaşmanın bir yolu yok.

komut dosyası o: Ben bu arada keşfedilen gibi ben

Is it possible to push a git stash to a remote repository?

Ayrıca söz soruya daha kapsamlı 'senaryolu' çözüm üzerinde yayınlanmıştır, git-paketi göndermek eğer enstrümantal olabilir

git send-pack ../myworkingfolder/ [email protected]{0}:refs/heads/collegue_stash 
+0

Teşekkürler, bunu gördüm (ve onu reddetti). Ancak bu soru farklı bir problemi çözmeye çalışıyor; Uzaktan repo görebiliyordum ama meslektaşım işten ayrılmak yerine saklanmıştı, sonra eve gitmiş ve bana saklanmaktan bahsetmişti, o yüzden sadece bu saklamayı ele almak istedim. Birkaç daha uzun sarımlı çözüm kendilerini gösterir (örneğin, bir yama yapın ve bunu yerel olarak uygulayın) ancak stoğu repo'ya getirmenin doğrudan bir yolunu aradım. –

+0

Daha fazla analiz ile yorumunuzu düzenleyin – sehe

+0

Oh, NICE! Teşekkürler! –

1

Yapamazsınız, ancak bu size alternatif bir yol sağlar. is-it-possible-to-push-a-git-stash-to-a-remote-repository

+0

Merhaba naven87. Diğer SO sorusunu gördüm ama ihtiyacım olan şeylere uymadı. Cevabınız için teşekkür ederim ve hiç kimse daha doğrudan bir çözüm gönderemezse bir süre sonra kabul edeceğim. –

+0

Tamam, kabul edildi. Teşekkürler naven87. –

8

Evet, yapabilirsiniz, kısmen: kaynak repo erişebilir. stash, başka bir ref'dur. Tam ref yolu ile bir refspec belirterek başlıklar (refe) olmayan refs alabilirsiniz.

git fetch some-remote +refs/stash:refs/remotes/some-remote/stash 
git stash apply some-remote/stash 
Sen de sıradan getirme çalıştırdığınızda zulası getirmesi bu yapılandırabilir

:

git config --add remote.some-remote.fetch +refs/stash:refs/remotes/some-remote/stash 
git fetch some-remote 
git stash apply some-remote/stash 

Ama ref olarak "Geçersiz refspec" ile hiçbir zula varsa bu başarısız olur mevcut değil, bu yüzden muhtemelen talep üzerine yapmaktan daha iyidir. Diğer takma adlar:

cat > /usr/local/bin/git-fetch-stash 
git fetch --verbose "$1" +refs/stash:refs/remotes/"$1"/stash 
^D 
chmod +x /usr/local/bin/git-fetch-stash 

git fetch-stash some-remote 

Aşağıdaki gibi bir takma ad ayarlayabilirsiniz: Uyarı, birden fazla depo çıkarılamıyor olmanızdır. Bunlar, reflog girişleri olarak saklanır ve bir uzaktan kumandanın reflog'unu getiremezsiniz.

+2

Bu kabul edilen yanıt – HerrSerker

+0

Anlaşmalı olmalıdır. İlk git getirme + git stash çifti büyüdür. –

İlgili konular