Anladığım kadarıyla Git Stash, bir diffs koleksiyonudur. Ben tek bir dosya foo.txt
Git Stash Diffs'i kaydederse, neden farklı bir dalda uygulanamaz?
ile bir bütün repo varsa
Yani, örneğin, dosyanın 32 satır sadece
Lorem Ipsum 01
Lorem Ipsum 02
Lorem Ipsum 03
...
Lorem Ipsum 30
a first line: good
a second line: bad
olduğunu Ve herşeyi işledi.
Şimdi yeni bir şube oluşturmak:
git checkout -b feature123
Ve şimdi bu dal üzerinde olduğumu, ben kelimeyi better
için good
ve worse
için bad
değiştirin.
Şimdi, sadece program yöneticimin gelip "Acil! 01 - 011 ve 02 - 022 arasında değişiklik yapmamız gerektiğini" varsayalım.
yüzden değişiklikleri saklamak ve daha sonra master
dalına değiştirin:
git stash
git checkout master
ve onun istediği gibi 022
için 011
için 01
ve 02
değişti.
Ve ben master
dalına daha önce "saklanmış" Değişiklikleri dahil etmek istiyorum ki:
git stash apply
ama dışarı hata olacaktır: Neden o
error: Your local changes to the following files would be overwritten by merge:
foo.txt
Please, commit your changes or stash them before you can merge.
Aborting
mı? Bu sadece diffs koleksiyonunu foo.txt
'a uygulayamaz mı?
(PS Ben ilk taahhüt ve ardından git stash apply
kullanın ve foo.txt
için bu diffs uygulayabilecektir Ama taahhüt neden olmasın önce Yani git stash
gerçekten sadece fark dosyaları bir koleksiyon kaydeder olabilir - tam tekrarlamak.? Bir koleksiyon fark dosyaları arasında ve daha sonra yapılacak bir git checkout .
(bütün değişiklikleri iptal etmek) gerçek mi)
Stash'd değişikliklerini uygulamadan önce yaptığınız değişiklikleri yaptınız mı? – sisyphus
@sisyphus Sorunun, değişikliklerin ne zaman yapılmasının (veya saklanmasının) ve niçin 'git stash'nın değiştirilemeyen dosyalara neden uygulanamadığıdır. – tobiasvl
Bu bir güvenlik mekanizması, ben bir tanesi için, değişimlerimin üzerine yazmamaya çok sevindim, en azından beni sahneye koymam. – Creynders