2016-04-12 26 views
2

Tek bir dosya saklamak istiyorum. git stash dosya adına bir parametre olarak izin vermediğinden, git stash -p kullanmalı ve değişiklikleri diğer dosyalar arasında seçmeliyim.Dosyaların "git" komutlarında görüntülendiği sırayı ayarlayabilir misiniz?

Değişiklik yapmayan değişiklikler, çok sayıda dosya içermiyorsa veya depolamak istediğim dosya ilk olanlardan biri değilse, bu iyi çalışır.

Ancak, birçok dosya varsa ve saklamak istediğim listenin sonuna gelindiyse, istediğime ulaşıncaya kadar diğerlerini de geçmem gerekiyor. Ve bu biraz sıkıcı.

Bu yüzden merak ettim: Dosyaların işlenemediği sırayı tanımlamanın bir yolu var mı git stash -p yapıyor?

+1

Neden buna ihtiyacınız var? [Bu] (http://stackoverflow.com/questions/3040833/stash-only-one-file-out-of-multiple-files-that-have-changed-with-git) sizin için çalışabilir mi? – Francesco

+0

'Git stash' sadece mevcut şubenizde olmayan (ve aslında * herhangi bir * dalda değil) bir taahhüt (daha doğrusu, en az iki, bazen üç, taahhüt) yaratmayı düşünmeye değer. Şube etiketleri taşınabilir olduğundan, işlemler oluşturabilir ve ardından etiketleri çevreyle karıştırıp diğer bazı dallardaki eserleri oluşturmuş gibi görünmesini sağlayabilirsiniz. Commits * make * oluşturma araçları, belirli dosyaları belirtmenize izin verir, böylece bunları burada kullanmayı düşünebilirsiniz. – torek

+0

@torek iyi ipucu! Yine de, "git stash" bir dosya adı kadar basit bir seçenek olarak izin vermez:) – fedorqui

cevap

1

Bunu yapabilirsiniz:

git add file 
git stash -k -u 
git stash 
git stash pop [email protected]\{1\} 
git checkout file 

Tamamen bir hack var ve değişiklikleri düzenledikleri yoksa bu yapmadan önce sadece çalışacaktır ancak olarak bildiğim kadarıyla iyi bir yol orada ihtiyacın olanı yap.

İlk olarak, o zaman, o zaman file saklamak (aynı zamanda izlenmeyen dosyaları almaya endeksinde file ve -u tutmak için -k) kalan her şeyi saklamak, dizine file ekleyin. Son iki komut temizlememizdir: her şeyi almak için ilk saklamayı uygularız, daha sonra checkoutfile değişikliklerini kaldırmak için (stash yapar). Sonunda, file adresinde yalnızca file adresinde yaptığınız değişikliklerle ve file dışında, HEAD sürümüne geri döndüğünüzde dizininiz değiştirilmeden stash ürününüzün olması gerekir.

+1

İlginç bir çözüm, teşekkürler! Biraz tehlikeli çünkü bahsettiğin gibi saklanı boşaltır. Bu arada, stash @ {1} 'içindeki parantezlerden kurtulmaya gerek yoktur. – fedorqui

+1

@fedorqui Stashınızı bozmamalı, ancak bundan önce yaptığınız herhangi bir 'git eklentisini 'sıfırlayacaktır. Kaçmaya çalıştığım için haklısın, zsh'deki otomatik tamamlanmamın bana ihtiyacım olduğuna inandırdım. :-) –

İlgili konular