Cara Git Menyimpan Perubahan Anda dengan Nama Bersekutu dan Cari Selepas itu
Pembangun sering kali melakukan pelbagai tugas. Anda mungkin sedang mengusahakan fitur baru dan mungkin ada permintaan untuk memperbaiki bug. Atau anda mungkin menjadi pembangun utama dalam pelbagai projek.
Semasa anda beralih antara tugas, kadang-kadang anda tidak mahu melakukan kerja yang belum selesai. Dalam kes-kes ini, perintah git stash boleh sangat membantu. Ini membolehkan anda menyusun perubahan anda dan kemudian kembali ke karya yang belum selesai tanpa menambahkan komitmen yang tidak perlu ke git repositori anda.
Aliran Kerja untuk Git Stash
Mari mulakan cawangan induk git dan buat fail ReadMe.txt.
$ mkdir my_projek$ cd my_projek /
$ git init
$ sentuh ReadMe.txt
$ git tambah -A
$ git commit -m "Permulaan"
Sekarang mari kita tambahkan fail lain yang dipanggil.txt ke cawangan induk.
$ sentuhan a.txt$ git tambah -A
$ git commit -m "Ditambah a.txt "
Sekiranya anda menyemak sejarah, anda akan melihat:
$ git log - taliand79f7aa Ditambah a.txt
9434d7e Memulakan
Sekarang mari kita buat cabang feature1 dan tambahkan b.fail txt:
ciri cawangan $ git1ciri pembayaran $ git1
$ sentuhan b.txt
$ git tambah -A
$ git commit -m "Ditambah b.txt "
Buka b anda.fail txt di editor dan masukkan baris:
Saya akan menukarnya kepada…Dan simpan failnya. Sekiranya anda memeriksa status git anda, anda melihat perkara berikut:
status $ gitPada ciri cawangan1
Perubahan yang tidak dilakukan untuk melakukan:
(gunakan "git add
(gunakan "git checkout --
diubah suai: b.txt
tidak ada perubahan yang ditambahkan ke komit (gunakan "git add" dan / atau "git commit -a")
Andaikan, pada tahap ini, anda mendapat permintaan untuk mengemas kini a.fail txt di cawangan induk. Tetapi anda tidak selesai dengan b.fail txt. Sekiranya anda cuba memeriksa cabang induk, anda mendapat ralat berikut:
$ git master checkoutralat: Perubahan tempatan anda pada fail berikut akan ditimpa oleh pembayaran:
b.txt
Tolong, lakukan perubahan anda atau simpan sebelum anda boleh menukar cawangan.
Menggugurkan
Tetapi anda tidak mahu melakukan kerja yang belum selesai di b.txt. Anda boleh menggunakan git stash dalam situasi ini:
$ git simpananDirektori kerja yang tersimpan dan keadaan indeks WIP pada fitur1: 2cfe39b Ditambahkan b.txt
HEAD kini berada di 2cfe39b Ditambahkan b.txt
Sekiranya anda memeriksa b.txt, mestilah kosong:
$ kucing b.txt$
Sekiranya anda memeriksa simpanan, anda akan melihat:
senarai $ git stashstash @ 0: WIP pada ciri1: 2cfe39b Ditambahkan b.txt
Sekiranya anda mencuba cawangan induk, anda seharusnya dapat melakukannya sekarang:
$ git master checkoutBeralih ke cawangan 'tuan'
Katakan anda membuat perubahan yang diperlukan pada master dan kemudian kembali ke feature1 branch:
Ciri pembayaran $ git1B anda.txt masih kosong:
$ kucing b.txt$
Tetapi jika anda mendapat perubahan dari simpanan menggunakan perintah berikut:
$ git stash berlakuPada ciri cawangan1
Perubahan yang tidak dilakukan untuk melakukan:
(gunakan "git add
(gunakan "git checkout --
diubah suai: b.txt
tidak ada perubahan yang ditambahkan ke komit (gunakan "git add" dan / atau "git commit -a")
Perintah stash apply mengambil perubahan tersimpan dan menerapkannya ke b.fail txt
Anda boleh menyelesaikan kerja anda di b.txt saya mengubah suai baris
Ke
Sekarang teruskan dan lakukan perubahan anda:
$ git tambah -A$ git commit -m "Diubah suai b.txt ”
Menggunakan stash tidak akan membersihkannya secara automatik dari simpanan. Anda mesti membersihkannya secara manual:
$ git penurunan simpananPenjatuhan / stash yang dijatuhkan @ 0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)
Kenapa Git Stash dengan Nama?
Git stash adalah timbunan. Oleh itu, anda boleh terus membuat perubahan.
Katakan anda menambah "X" ke b.txt, simpan, tambahkan "Y" ke b.txt, simpan dan tambahkan "Z" ke b.txt dan simpannya. Sekiranya anda menyemak sejarah simpanan, anda akan melihat perkara seperti ini:
senarai $ git stash[dilindungi e-mel] 0: WIP pada ciri1: 2d6f515 Diubah suai b.txt
[dilindungi e-mel] 1: WIP pada ciri1: 2d6f515 Diubah suai b.txt
[dilindungi e-mel] 2: WIP pada ciri1: 2d6f515 Diubah suai b.txt
Anda tidak mempunyai cara untuk mengetahui simpanan mana yang berubah. Apabila anda menyimpan, anda boleh menggunakan pilihan simpan untuk memasukkan komen. Anda boleh menggunakan komen untuk melampirkan nama ke simpanan anda dan membuatnya dapat dikenali:
$ git stash simpan "X"Direktori kerja yang tersimpan dan keadaan indeks Pada ciri1: X
KEPALA kini berada di 2d6f515 Diubah suai b.txt
Untuk menambahkan modifikasi “X”, “Y” dan “Z”, Anda dapat memperoleh yang berikut di simpanan menggunakan pilihan simpan untuk setiap simpanan:
senarai $ git stashstash @ 0: Pada ciri1: Z
stash @ 1: Pada ciri1: Y
stash @ 2: Pada ciri1: X
Sekarang anda mempunyai nama untuk setiap perubahan yang anda simpan. Malangnya, anda tidak dapat menggunakan nama untuk mendapatkan simpanan. Anda mesti menggunakan nombor simpanan. Katakan anda mahu mendapatkan perubahan "Y" anda. Anda melihat bahawa [dilindungi e-mel] 1 adalah Y. Oleh itu, anda boleh menerapkan perubahan tersebut ke cawangan semasa anda:
$ git stash berlaku stash @ 1Dan b anda.txt semestinya mempunyai perubahan dari [dilindungi e-mel] 1.
Anda boleh menggunakan kaedah yang sama untuk menjatuhkan simpanan. Katakan, anda sedar bahawa anda tidak memerlukan stash X lagi. Anda hanya boleh menggunakan perintah berikut untuk menghapus simpanan itu:
$ git stash drop stash @ 2Dan simpanan harus hilang:
senarai $ git stashstash @ 0: Pada ciri1: Z
stash @ 1: Pada ciri1: Y
Ingat bahawa jika anda menggunakan pilihan aplikasikan dan jatuhkan tanpa parameter apa pun, ia akan menggunakan bahagian atas timbunan ([dilindungi e-mel] 0).
Kesimpulannya
Perintah git stash adalah kaedah yang kuat untuk mengurus ruang kerja anda. Menguasai perintah ini akan membantu anda bekerja dengan lebih cekap.
Sambung belajar:
- https: // git-scm.com / book / en / v1 / Git-Tools-Stashing
Rujukan:
Stack Overflow: how-to-name-and-retrieve-a-stash-by-name-in-git