Bir dosyada yaptığım değişiklikler ve yeni bir dosya var ve başka bir göreve geçerken bunları saklamak için git stash'i kullanmak istiyorum. Ancak git stash tek başına yalnızca mevcut dosyadaki değişiklikleri saklıyor; yeni dosya çalışma ağacımda kalıyor ve gelecekteki çalışmalarımı karıştırıyor. Bu izlenmemiş dosyayı nasıl saklayabilirim?
Takip edilmeyen dosyalar da dahil olmak üzere çalışma dizininizi saklamak için (özellikle .gitignore'da olanlar) muhtemelen bu cmd'yi kullanmak istersiniz:
git stash --include-untracked
Güncelleme 17 Mayıs 2018:
git'in yeni sürümleri artık izlenmeyen ve yok sayılan dosyalar da dahil olmak üzere tüm dosyaları saklayan git stash --all
özelliğine sahiptir.
'git stash --include-untracked' artık yok sayılan dosyalara dokunmuyor (git 2.16.2 üzerinde test edildi).
Orijinal cevap aşağıdadır:
*[Uyarı, gitignore dosyanızda herhangi bir dizin/ girişi varsa bunu yapmak dosyalarınızı kalıcı olarak silecektir.]1**
1.7.7 sürümünden itibaren git stash --include-untracked
veya git stash save -u
kullanarak takip edilmeyen dosyaları depolamadan saklayabilirsiniz.
Dosyayı ekleyin (git add
) ve izlemeye başlayın. Sonra sakla. Dosyanın tüm içeriği yeni olduğu için saklanacak ve gerektiğinde üzerinde değişiklik yapabileceksiniz.
Bunun, git'e dosyanın tüm içeriğini hazırlama alanına işlemek yerine dosyanın var olduğunu söyleyerek ve ardından `git stash'ı çağırarak çözülebileceğini düşündüm. Araqnid tarif ediyor ilkinin nasıl yapılacağını.
git add --intent-to-add path/to/untracked-file
veya
git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file
Ancak, ikincisi işe yaramıyor:
$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state