Cara Git Stash Perubahan Anda dengan Nama Terkait dan Temukan Setelahnya
Pengembang sering harus melakukan banyak tugas. Anda mungkin sedang mengerjakan fitur baru dan mungkin ada permintaan untuk memperbaiki bug. Atau Anda mungkin menjadi pengembang utama di beberapa proyek.
Saat Anda beralih di antara tugas, terkadang Anda tidak ingin melakukan pekerjaan yang belum selesai. Dalam kasus ini, perintah git stash bisa sangat membantu. Ini memungkinkan Anda untuk menumpuk perubahan Anda dan kemudian kembali ke pekerjaan yang belum selesai tanpa menambahkan komitmen yang tidak perlu ke repositori git Anda.
Alur Kerja untuk Git Stash
Mari inisialisasi cabang master git dan komit file ReadMe.txt.
$ mkdir my_project$ cd proyek_saya/
$ git init
$ sentuh ReadMe.txt
$ git tambahkan -A
$ git commit -m "Inisialisasi"
Sekarang mari tambahkan file lain bernama a.txt ke cabang master.
$ sentuh.txt$ git tambahkan -A
$ git commit -m "Ditambahkan.txt"
Jika Anda memeriksa riwayatnya, Anda akan melihat:
$ git log --onelined79f7aa Ditambahkan.txt
9434d7e Inisialisasi
Sekarang mari buat cabang feature1 dan tambahkan b.berkas.txt:
$ git fitur cabang1$ git fitur checkout1
$ sentuh b.txt
$ git tambahkan -A
$ git commit -m "Ditambahkan b.txt"
Buka b Anda.txt di editor dan masukkan ke dalam baris:
Saya akan mengubah ini menjadi…Dan simpan filenya. Jika Anda memeriksa status git Anda, Anda akan melihat yang berikut:
$git statusPada fitur cabang1
Perubahan tidak dipentaskan untuk komit:
(gunakan "git add
(gunakan "git checkout --
diubah: b.txt
tidak ada perubahan yang ditambahkan ke komit (gunakan "git add" dan/atau "git commit -a")
Misalkan, pada tahap ini, Anda mendapatkan permintaan untuk memperbarui a.file txt di cabang master. Tapi Anda belum selesai dengan b.file txt. Jika Anda mencoba memeriksa cabang master, Anda mendapatkan kesalahan berikut:
$git checkout master checkoutkesalahan: Perubahan lokal Anda ke file berikut akan ditimpa oleh checkout:
b.txt
Tolong, komit perubahan Anda atau simpan sebelum Anda dapat berpindah cabang.
Aborsi
Tapi Anda tidak ingin melakukan pekerjaan yang belum selesai di b.txt. Anda dapat menggunakan git stash dalam situasi ini:
$ git simpananDirektori kerja yang disimpan dan status indeks WIP pada fitur1: 2cfe39b Ditambahkan b.txt
HEAD sekarang di 2cfe39b Ditambahkan b.txt
Jika Anda memeriksa b.txt, itu harus kosong:
$ kucing b.txt$
Jika Anda memeriksa simpanan, Anda akan melihat:
$ git daftar simpananstash@0: WIP pada fitur1: 2cfe39b Ditambahkan b.txt
Jika Anda mencoba memeriksa cabang master, Anda seharusnya dapat melakukannya sekarang:
$git checkout master checkoutBeralih ke cabang 'master'
Misalkan Anda membuat perubahan yang diperlukan pada master dan kemudian kembali ke cabang feature1:
$ git fitur checkout1Anda.txt masih kosong:
$ kucing b.txt$
Tetapi jika Anda mendapatkan perubahan dari simpanan menggunakan perintah berikut:
$ git simpanan berlakuPada fitur cabang1
Perubahan tidak dipentaskan untuk komit:
(gunakan "git add
(gunakan "git checkout --
diubah: b.txt
tidak ada perubahan yang ditambahkan ke komit (gunakan "git add" dan/atau "git commit -a")
Perintah simpanan berlaku mengambil perubahan simpanan dan menerapkannya ke b.file txt
Anda dapat menyelesaikan pekerjaan Anda di b.txt saya memodifikasi baris
Untuk
Sekarang lanjutkan dan komit perubahan Anda:
$ git tambahkan -A$ git commit -m "Dimodifikasi oleh.txt"
Menerapkan simpanan tidak secara otomatis membersihkannya dari simpanan. Anda harus membersihkannya secara manual:
penurunan simpanan $gitReferensi/simpanan yang dihapus@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)
Mengapa Git Stash dengan Nama?
Git stash adalah tumpukan. Jadi Anda dapat terus menumpuk perubahan Anda.
Misalkan Anda menambahkan "X" ke b.txt, simpan, tambahkan "Y" ke b.txt, simpan dan tambahkan "Z" ke b.txt dan simpan itu. Jika Anda memeriksa riwayat simpanan, Anda akan melihat sesuatu seperti ini:
$ git daftar simpanan[dilindungi email]0: WIP pada fitur1: 2d6f515 Dimodifikasi oleh.txt
[dilindungi email]1: WIP pada fitur1: 2d6f515 Dimodifikasi oleh.txt
[dilindungi email]2: WIP pada fitur1: 2d6f515 Dimodifikasi oleh.txt
Anda tidak memiliki cara untuk mengetahui simpanan mana yang memiliki perubahan. Saat Anda menyimpan, Anda dapat menggunakan opsi simpan untuk memberi komentar. Anda dapat menggunakan komentar untuk melampirkan nama ke simpanan Anda dan membuatnya dapat dikenali:
$ git simpanan simpan "X"Direktori kerja dan status indeks yang disimpan Pada fitur1: X
HEAD sekarang di 2d6f515 Dimodifikasi b.txt
Untuk menambahkan modifikasi "X", "Y" dan "Z", Anda bisa mendapatkan yang berikut di simpanan Anda menggunakan opsi simpan untuk setiap simpanan:
$git daftar simpanansimpanan@0: Aktif fitur1: Z
simpanan@1: Aktif fitur1: Y
simpanan@2: Aktif fitur1: X
Sekarang Anda memiliki nama untuk setiap perubahan yang Anda sembunyikan. Sayangnya, Anda tidak dapat menggunakan nama untuk mengambil simpanan. Anda harus menggunakan nomor simpanan. Misalkan Anda ingin mendapatkan perubahan "Y" Anda. Anda melihat bahwa [dilindungi email]1 adalah Y. Jadi, Anda dapat menerapkan perubahan itu ke cabang Anda saat ini:
$ git simpanan terapkan simpanan@1Dan b .mu.txt harus memiliki perubahan dari [dilindungi email]1.
Anda dapat menggunakan metode yang sama untuk menjatuhkan simpanan. Misalkan, Anda menyadari bahwa Anda tidak membutuhkan simpanan X lagi. Anda bisa menggunakan perintah berikut untuk menghapus simpanan itu:
$ git simpanan jatuhkan simpanan@2Dan simpanan itu harus hilang:
$git daftar simpanansimpanan@0: Aktif fitur1: Z
simpanan@1: Aktif fitur1: Y
Ingat bahwa jika Anda menggunakan opsi terapkan dan lepas tanpa parameter apa pun, itu akan menggunakan tumpukan teratas ([dilindungi email]0).
Kesimpulan
Perintah git stash adalah cara yang ampuh untuk mengelola ruang kerja Anda. Menguasai perintah ini akan membantu Anda bekerja lebih efisien.
Pelajaran lanjutan:
- https://git-scm.com/book/en/v1/Git-Tools-Stashing
Referensi:
Stack Overflow: bagaimana-menamai-dan-mengambil-a-simpanan-dengan-nama-di-git