Git stash'ı nasıl paylaşabilirim?


32

Git'te bir zula paylaşmanın bir yolu var mı?

Birkaç makinede çalışıyorum ve şu andaki çalışma durumumu birinden diğerine taşıyabilmek istiyorum.

Bir klondan bir klondan diğerine bir külüü itip alabilmemin bir yolunu arıyorum ve bunun diğer klonun kulağı için bir saksı olarak veya görünür bir uzak dal olarak görünmesini sağladım. Uzaktan kumanda kendi başına saklanmışsa, eskiden mutlaka çalışacağını sanmıyorum.

Aslında, şu zulata bağlı bir şube olduğu anlaşılan (görünüşe göre), "her zula bir şubeye bağlı kal ve sonra bunları paylaş" satırları boyunca çözüm aramıyorum. çok, dallar. Bu nedenle itme / çekmeyi kontrol etmek için kullanabileceğim refspec veya benzerini arıyorum .

Yanıtlar:


26

Saklamak adil, stashya da refs/stashuzaktaki bir şubeye götürebilirsin:

git push origin stash@{2}:refs/heads/otherstash

refs/stashBununla birlikte, Git doğrudan itmeyi reddedecektir . Ayrıca, önceki depoların depolandığı tüm reflog'ları zorlamanın bir yolu görünmüyor .


6
git push origin $(for sha in $(git rev-list -g stash); do echo $sha:refs/heads/stash_$sha; done)tüm zulalar için güzelce yapmalı; Ayrıca bkz. Stackoverflow.com/a/5248758/85371
Şubesinde

11

Bir git pushdallar oluşturmaktan kaçınmak için iyi bir şekilde entegre git stash show -p > change.patchedilmedi, (değişiklikleri sakladıktan sonra) ya da çalıştığım bir sonraki makinede çalıştığım git diff --cached > change.patchbir yama oluşturmak için kullanıyorum git apply change.patch.

En azından bu çözümle, mevcut çalışma durumunuzda birçok dosya değiştirilirse, her şey tek bir veri biriminde bulunur.


Evet ama nasıl ? git stash -p sadece her iri hakkında etkileşimli bir şekilde soruyor - sonra anlamadığım uzun bir çizgi yayıyor. Yanımda başka bir makineye götürebileceğim bu "yama" nerede? ve git diff - cached nedir? ve git başvurusunu nasıl kullanıyorsunuz? Biraz daha detaylandırır mısınız lütfen?
Motti Shneor

Cevabımı detaylandırıp düzelttim
Neo

4

Yama yapabilir ve birine gönderebilirsin. Yapmanız gereken şey uygulamak.

git diff >> file.diff

3
Bunun yalnızca bir fark yaratan nesneler için işe yarayacağını unutmayın; çıktıda "İkili dosyalar farklı" olur.
Liam,
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.