git stash dan git pull

92

Saya baru mengenal Git dan saya menggunakan plugin EGit eclipse untuk melakukan.

Saya memodifikasi beberapa file dan saya menyembunyikan perubahan, lalu saya lakukan git pulldi baris perintah yang menarik semua komit terbaru. Lalu saya lakukan Apply stashed changesdari EGit. Sekarang ini menerapkan perubahan saya dan perubahan yang ditarik dari komit terakhir dari file yang disimpan keluar. Saya tidak yakin mengapa itu tidak menanyakan saya tentang konflik penggabungan dan menimpa perubahan saya dan kehilangan perubahan komit sebelumnya.

Bagaimana cara mendapatkan perubahan itu?

Lolly
sumber
Kedengarannya tidak masuk akal. Berlaku simpanan membawa perubahan yang tidak berkonflik atau menyebabkan konflik penggabungan. Saya pikir Anda lupa menyebutkan sesuatu. Juga, Anda dapat mengulangi langkah-langkah Anda, kemungkinan besar simpanan Anda masih ada dalam daftar, gunakan git stash listuntuk menampilkannya.
kan

Jawaban:

215

Ketika Anda memiliki perubahan pada copy pekerjaan Anda, dari baris perintah lakukan:

git stash 

Ini akan menyembunyikan perubahan Anda dan menghapus laporan status Anda

git pull

Ini akan menarik perubahan dari cabang hulu. Pastikan tertulis maju cepat dalam laporan. Jika tidak, Anda mungkin melakukan penggabungan yang tidak diinginkan

git stash pop

Ini akan menerapkan perubahan yang disimpan kembali ke copy pekerjaan dan menghapus perubahan dari simpanan kecuali Anda mengalami konflik. Jika terjadi konflik, mereka akan tetap tersimpan sehingga Anda dapat memulai kembali jika diperlukan.

jika Anda perlu melihat apa yang ada di simpanan Anda

git stash list
yilmazhuseyin.dll
sumber
@java_newbie, Jika Anda ingin melakukan ini dengan simpanan dan tarik, tidak ada cara. Tetapi Anda dapat mencapai hasil yang sama dengan rebase. Perintah 'git rebase origin / <upstream branch name>' harus melakukan hal yang sama.
yilmazhuseyin
5
Saya pikir ini akan melakukannya:git stash && git pull && git stash pop
Fabrice Kabongo
@yilmazhuseyin Apa yang Anda maksud dengan 'hasil yang sama' Bisakah Anda memberikan anekdot jika Anda bisa? Apakah maksud Anda git rebase origin/masterakan menghasilkan hasil yang sama seperti git stash; git pull; git stash pop?
nehem
9
Jika menggunakan Git v2.9.0 atau versi yang lebih baru, coba git pull --rebase --autostash. FYI
momocow
1
Apakah --autostashselalu berhasil? Misalnya, jika saya memiliki file yang tidak terlacak yang sebagian sudah ada di Git?
qräbnö