Seperti yang telah dikatakan di tempat lain, jawabannya adalah ke git addfile. misalnya:
git add path/to/untracked-file
git stash
Namun, pertanyaannya juga muncul di jawaban lain: Bagaimana jika Anda tidak benar-benar ingin menambahkan file? Sejauh yang saya tahu, Anda harus. Dan berikut ini TIDAK akan bekerja:
git add -N path/to/untracked/file # note: -N is short for --intent-to-add
git stash
ini akan gagal, sebagai berikut:
path/to/untracked-file: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
Jadi, apa yang bisa kamu lakukan? Nah, Anda harus benar-benar menambahkan file, namun , Anda dapat secara efektif membatalkannya nanti, dengan git rm --cached:
git add path/to/untracked-file
git stash save "don't forget to un-add path/to/untracked-file" # stash w/reminder
# do some other work
git stash list
# shows:
# stash@{0}: On master: don't forget to un-add path/to/untracked-file
git stash pop # or apply instead of pop, to keep the stash available
git rm --cached path/to/untracked-file
Dan kemudian Anda dapat terus bekerja, dalam kondisi yang sama seperti sebelumnya git add(dengan file yang tidak terpantau disebut path/to/untracked-file; ditambah perubahan lain yang mungkin harus dilacak file).
Kemungkinan lain untuk alur kerja tentang ini adalah sesuatu seperti:
git ls-files -o > files-to-untrack
git add `cat files-to-untrack` # note: files-to-untrack will be listed, itself!
git stash
# do some work
git stash pop
git rm --cached `cat files-to-untrack`
rm files-to-untrack
[Catatan: Seperti disebutkan dalam komentar dari @mancocapac, Anda mungkin ingin menambahkan --exclude-standardke git ls-filesperintah (jadi, git ls-files -o --exclude-standard).]
... yang juga dapat dengan mudah ditulis - bahkan alias akan melakukannya (disajikan dalam sintaks zsh; sesuaikan sesuai kebutuhan) [juga, saya mempersingkat nama file sehingga semuanya cocok di layar tanpa menggulirkan jawaban ini; jangan ragu untuk mengganti nama file alternatif yang Anda pilih]:
alias stashall='git ls-files -o > .gftu; git add `cat .gftu`; git stash'
alias unstashall='git stash pop; git rm --cached `cat .gftu`; rm .gftu'
Perhatikan bahwa yang terakhir mungkin lebih baik sebagai skrip atau fungsi shell, untuk memungkinkan parameter diberikan git stash, jika Anda tidak ingin poptetapi apply, dan / atau ingin dapat menentukan simpanan tertentu, daripada hanya mengambil bagian atas satu. Mungkin ini (bukannya alias kedua, di atas) [spasi kosong dilucuti agar pas tanpa menggulir; tambahkan kembali untuk peningkatan keterbacaan]:
function unstashall(){git stash "${@:-pop}";git rm --cached `cat .gftu`;rm .gftu}
Catatan : Dalam formulir ini, Anda perlu memberikan argumen tindakan serta pengidentifikasi jika Anda akan memberikan pengidentifikasi simpanan, misalnya unstashall apply stash@{1}atauunstashall pop stash@{1}
Yang tentu saja Anda masukkan ke dalam .zshrcatau setara untuk membuat ada jangka panjang.
Semoga jawaban ini bermanfaat bagi seseorang, menyatukan semuanya dalam satu jawaban.
git stash showtidak menghasilkan apa-apa dan Anda mungkin tergoda untuk menjatuhkannya (seperti yang baru saja saya lakukan saat berisi skrip berguna yang saya tulis beberapa bulan lalu) → cara memulihkan simpanan yang jatuh )