Saya membuat beberapa perubahan pada cabang saya dan menyadari bahwa saya lupa saya telah menyembunyikan beberapa perubahan lain yang diperlukan untuk cabang tersebut. Apa yang saya inginkan adalah cara untuk menggabungkan perubahan simpanan saya dengan perubahan saat ini.
Apakah ada cara untuk melakukan ini?
Yang lebih untuk kenyamanan, saya akhirnya menyerah dan melakukan perubahan pertama saya saat ini, kemudian perubahan saya simpanan, tapi saya lebih suka untuk mendapatkannya dengan satu gerakan.
Jawaban:
Saya baru saja menemukan bahwa jika perubahan yang tidak dikomit ditambahkan ke indeks (yaitu "dipentaskan", menggunakan
git add ...
), makagit stash apply
(dan, mungkin,git stash pop
) benar-benar akan melakukan penggabungan yang tepat. Jika tidak ada konflik, Anda adalah emas. Jika tidak, selesaikan seperti biasagit mergetool
, atau secara manual dengan editor.Untuk lebih jelasnya, ini adalah proses yang saya bicarakan:
... yang mungkin Anda cari.
tl; dr
Jalankan
git add
dulu.sumber
git stash apply --force
atau sesuatu.git add .
,,git stash apply
lalugit reset
menerapkan simpanan ke perubahan pekerjaan saya dan bergabung tanpa harus membuat komitmen.Menjalankan
git stash pop
ataugit stash apply
pada dasarnya merupakan gabungan. Anda seharusnya tidak perlu melakukan perubahan saat ini kecuali file yang diubah di simpanan juga diubah dalam copy pekerjaan, dalam hal ini Anda akan melihat pesan kesalahan ini:Dalam hal ini, Anda tidak dapat menerapkan simpanan ke perubahan saat ini dalam satu langkah. Anda dapat mengkomit perubahan, menerapkan simpanan, mengkomit kembali, dan menghancurkan dua komit menggunakan
git rebase
jika Anda benar-benar tidak ingin dua komit, tetapi itu mungkin lebih banyak masalah yang layak.sumber
git commit --amend
.Berikut ini opsi lain untuk melakukannya:
git stash show -p
akan menampilkan patch simpanan yang terakhir disimpan.git apply
akan menerapkannya. Setelah penggabungan selesai, simpanan gabungan dapat dijatuhkan dengangit stash drop
.sumber
git stash pop
tidak hanya melakukan ini dalam kasus di mana penggabungan berlaku bersih ...git stash show -p --no-color | git apply --3way
(--3way
= mundur pada penggabungan 3-arah jika tambalan gagal).git stash show -p
menciptakan perbedaan antara konten simpanan dan komit kembali ketika entri simpanan pertama kali dibuat . Jadi ini akan menimpa perubahan file OP yang dibuat.git stash show -p
akan digabungkan olehgit apply
, jika memungkinkan untuk dilakukan tanpa konflik.Cara saya melakukan ini adalah dengan
git add
ini dulugit stash apply <stash code>
. Ini cara paling sederhana.sumber
Seperti yang disarankan oleh @Brandan, inilah yang perlu saya lakukan untuk berkeliling
Ikuti proses ini:
Dan Anda akan dibiarkan dengan perubahan lokal yang sepenuhnya digabungkan ke
file
, siap untuk melakukan pekerjaan / pembersihan lebih lanjut atau membuat satu komitmen yang baik. Atau, jika Anda tahu konten gabunganfile
akan benar, Anda bisa menulis pesan yang pas dan melompatgit reset HEAD^
.sumber
Mungkin, itu bukan ide terburuk untuk digabungkan (via difftool) dari ... ya ... cabang!
sumber
kamu bisa dengan mudah
sumber
Opsi lain adalah melakukan "git simpanan" lain dari perubahan yang tidak dikomit lokal, lalu menggabungkan dua simpanan git. Sayangnya git tampaknya tidak memiliki cara untuk dengan mudah menggabungkan dua simpanan. Jadi salah satu pilihan adalah membuat dua file .diff dan menerapkan keduanya - jangan sampai itu bukan komitmen ekstra dan tidak melibatkan proses sepuluh langkah: |
caranya: https://stackoverflow.com/a/9658688/32453
sumber