Saya pergi ke cabang dan melakukan beberapa pekerjaan. Saya ingin pergi ke cabang lain tetapi tidak ingin berkomitmen jadi saya lakukan git stash
. Lalu aku melakukannya git checkout <otherbranch>
. Saya melakukan beberapa pekerjaan di sana dan, seperti di cabang pertama, saya ingin beralih dari itu sebelum melakukan pekerjaan. Jadi saya melakukannya di git stash
sana juga. Saya beralih kembali ke cabang pertama dan mencoba melepaskannya ( git stash pop
) berpikir itu akan mendapatkan simpanan dari cabang tertentu. Saya terkejut bahwa itu melepaskan simpanan dari <otherbranch>
(simpanan terbaru). Saya mendapat kesan bahwa simpanan adalah khusus cabang tetapi perilaku ini menunjukkan bahwa hanya ada satu simpanan untuk seluruh repositori lokal.
Apakah khusus git stash
cabang atau untuk seluruh repositori? Jika ini untuk seluruh repositori, dapatkah saya memberikan opsi ke sana untuk membuatnya khusus untuk cabang?
stash list
item selain hanya deskripsi?git stash show
(ataugit stash show stash@{<number>}
untuk sesuatu selain@{0}
versi) memberi Andadiff --stat
; tambahkan-p
untuk mendapatkan perbedaan yang lebih besar. Catatan: ini membandingkan "pohon kerja" di "tas simpanan" dengan komit yang digantung; tidak ada antarmuka front-end untuk melihat apa yang ada di "indeks" di tas simpanan yang diberikan.Tidak dan Tidak. Git simpanan adalah per-repositori.
Ini adalah halaman yang bagus tentang cara menggunakannya.
sumber
git stash
bukan per cabang.git stash
(yang bisa hilang dengan mudah bila Anda memiliki banyak simpanan dan cabang)git commit
untuk menyimpan kode yang belum selesai di cabang Anda dan ketika Anda siap untuk menyelesaikan kode lakukan agit reset ${COMMIT_HASH_VALUE}
untuk mendapatkan kembali kode yang belum selesaigit commit
dangit reset
bila digunakan bersama dengan benar dapat mensimulasikan agit stash
untuk cabang tertentuBerikut adalah skenario kehidupan nyata umum yang menunjukkan nilai dan penggunaan perintah
commit
danreset
:git commit
pada fitur cabang XCOMMIT_HASH_VALUE
untuk nantigit reset ${COMMIT_HASH_VALUE}
(FYI defaultnya
git reset
adalah--mixed
)sumber
git reset HEAD~1
.HEAD^1
atauHEAD~1
.Saya tidak yakin mengapa setiap jawaban di sini menyarankan untuk meniru simpanan dengan
commit
+reset
. Stash sangat cocok untuk digunakan, terutama saat bekerja di banyak cabang. Saya juga tidak ingin mengkomit ketika saya bekerja di beberapa cabang, karena saya ingin semua perubahan yang dimodifikasi masih disorot di editor saya ketika saya kembali.Jadi inilah alur kerja simpanan:
Kapan pun Anda harus beralih cabang dan Anda belum siap untuk berkomitmen, simpan perubahan Anda ke tumpukan
Saat Anda kembali ke cabang, periksa simpanannya
Jika Anda di cabang,
FixIssue0203
Anda dapat menggunakangit stash pop
karena ini akan menerapkan bagian atasstash@{0}
dan menghapusnya dari simpanan.Namun, jika Anda di cabang
ImproveReadme
Anda harus terlebih dahulu menerapkan simpanan 1git stash apply stash@{1}
dan kemudian menghapus simpanan 1 dari tumpukangit stash drop stash@{1}
.Itu dia!
sumber