Bagaimanakah stash berfungsi dalam git?
淡淡烟草味
淡淡烟草味 2017-05-02 09:44:35
0
1
805

1. Senario ujian 1:
Anggap index.html sudah ada dalam repositori kod Sekarang anda mengubah suai halaman index.html, kemudian tambah untuk menyimpan halaman index.html buat sementara waktu, kemudian teruskan mengubah suai indeks. halaman .html, dan kemudian git stash, kali ini gudang kod bersih, pengubahsuaian disimpan sementara, dan kemudian laksanakan git stash pop untuk memulihkan pengubahsuaian Pada masa ini, didapati pengubahsuaian dalam ruang kerja dipulihkan. tetapi pengubahsuaian di kawasan pementasan hilang. Iaitu, status git mendapati bahawa tiada pengubahsuaian dipentaskan, dan pengubahsuaian berperingkat sebelumnya telah dibuang, tetapi pengubahsuaian dalam ruang kerja dikekalkan sepenuhnya.

2. Senario ujian dua:
Sekarang tambah halaman test01.html, status git menunjukkan bahawa test01.html tidak dijejaki oleh git, dan kemudian ubah suai fail index.html Pada masa ini, git stash mendapati itu fail index.html disimpan buat sementara waktu, tetapi fail test01.html tidak disimpan buat sementara waktu. Iaitu, status git tidak menyimpan sementara fail yang tidak dijejaki oleh git.

3. Uji senario tiga:
Teruskan senario kedua, ubah suai fail index.html dan tambah fail test01.html sebagai fail baharu Pada masa ini, git tambahkan fail test01.html, biarkan test01. html dikesan oleh git, dan kemudian git stash, anda boleh melihat bahawa fail test01.html disimpan sementara melalui kaedah git stash show, kemudian git stash pop, pengubahsuaian dipulihkan, git status mendapati bahawa fail test01.html berada dalam keadaan sementara dan index.html masih merupakan pengubahsuaian ruang kerja yang dikekalkan. Iaitu, git menambah fail yang tidak dijejaki oleh git sebelum ini. Selepas git stash, fail ini akan disimpan sementara, dan selepas git stash pop, fail yang baru ditambah akan tetap berada dalam keadaan sementara senario 1, indeks Dalam fail .html, hanya pengubahsuaian dalam ruang kerja disimpan sementara, dan pengubahsuaian dalam kawasan storan sementara hilang.

4. Uji senario empat:
Teruskan senario tiga, ubah suai fail index.html dan tambah fail test01.html sebagai fail baharu Pada masa ini, git tambahkan fail test01.html, biarkan test01. html dijejaki oleh git, dan kemudian Ubah suai fail test01.html, kemudian git stash, git stash pop, dan mendapati bahawa test01.html masih dalam keadaan sementara, tetapi kandungan fail yang disimpan sementara ialah kandungan diubah suai terakhir ruang kerja. Iaitu, git menambah fail yang tidak pernah dijejaki oleh git sebelum ini, dan kemudian ubah suai fail tersebut Selepas git stash, fail tersebut akan disimpan sementara, dan selepas git stash pop, fail yang baru ditambah akan tetap berada dalam. keadaan sementara, tetapi Kandungan pengubahsuaian yang disimpan sementara ialah kandungan pengubahsuaian ruang kerja sebelumnya dan bukannya kandungan pengubahsuaian sementara melalui tambah.


Melalui ujian di atas, saya tidak menjumpai corak kerja git stash, dan saya sangat keliru, saya harap pakar git dapat memberi saya bimbingan dan analisis.

淡淡烟草味
淡淡烟草味

membalas semua(1)
曾经蜡笔没有小新

Pertama sekali, izinkan saya menerangkan fungsi asas perintah git stash: mengendalikan keadaan kotor direktori kerja, iaitu fail penjejakan yang diubah suai dan perubahan sementara , dan kemudian Pengubahsuaian yang belum selesai disimpan pada timbunan . Selepas mengetahui perkara ini, mari kita lihat beberapa perkara penting yang saya rumuskan:

    Perintah
  • git stash akan menolak fail yang dijejaki ke dalam tindanan, manakala fail yang tidak dikesan tidak akan ditolak ke dalam tindanan, seperti yang diterangkan dalam eksperimen poster 2.

  • Jika kerja sebelumnya telah ditambahkan pada kawasan storan sementara , perintah git stash tidak akan menambah pengubahsuaian yang memunculkan tindanan ke kawasan storan sementara secara lalai, seperti yang diterangkan dalam eksperimen poster 1 Begitulah keadaannya, tetapi penerangan poster sebenarnya salah Pengubahsuaian yang disimpan sementara sebelum ini tidak ditinggalkan atau hilang tetapi kekal di kawasan kerja, tetapi tidak ditambahkan ke kawasan simpanan sementara.

  • Mengenai fail yang baru ditambahkan test01.html dalam eksperimen 2 dan 3 poster, ini sebenarnya situasi yang istimewa. Kita boleh memahaminya dengan cara ini: Hasil daripada stash pop adalah untuk memulihkan pengubahsuaian sebelumnya, dan operasi pemulihan yang boleh dilakukan untuk test01.html hanya boleh menyertai semula kawasan storan sementara. Jika tidak, test01.html akan kembali kepada wujud status tidak dijejaki.

  • Jika anda ingin menggunakan semula pengubahsuaian simpan sementara sebelumnya, anda boleh menambah pilihan git stash pop selepas --index, supaya anda boleh memulihkannya kepada keadaan yang sama seperti dahulu, iaitu, sementara sebelumnya Apa yang telah disimpan kini akan berada dalam keadaan sementara, dan apa yang disimpan sementara akan tetap berada dalam keadaan tidak berperingkat.

Akhir sekali, saya perlu menyatakan apa yang dikatakan oleh poster itu:

Pengubahsuaian yang disimpan sebelum ini telah dibuang

atau

Pengubahsuaian di kawasan pementasan telah hilang

Sebenarnya, penerangan itu salah, atau tidak sepatutnya diterangkan begini, kerana ia akan membuatkan kita salah faham - kita mungkin tersalah anggap bahawa git stash hanya akan menyimpan sementara pengubahsuaian ruang kerja , tetapi keadaan sebenar sepatutnya Seperti ini: git stash akan mengekalkan operasi yang dipulihkan dalam ruang kerja secara lalai, tetapi tidak akan mementaskannya semula secara automatik untuk anda .
Poster boleh membuat semula percubaan di atas untuk mengesahkan kenyataan saya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan