Jawaban yang diberikan sejauh ini tidak ideal karena mereka membutuhkan banyak pekerjaan yang tidak perlu untuk menyelesaikan konflik penggabungan, atau mereka membuat terlalu banyak asumsi yang sering salah. Ini adalah cara melakukannya dengan sempurna. Tautannya ke situs saya sendiri.
Anda memiliki perubahan tanpa komitmen pada komitmen my_branchyang ingin Anda komit master, tanpa melakukan semua perubahan dari my_branch.
Contoh
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
Penjelasan
Mulailah dengan menggabungkan masterke cabang Anda, karena bagaimanapun Anda harus melakukan itu pada akhirnya, dan sekarang adalah waktu terbaik untuk menyelesaikan konflik apa pun.
The -upilihan (alias --include-untracked) di git stash -umencegah Anda dari kehilangan file yang tidak terlacak saat nanti lakukan git clean -f -ddalam master.
Setelah git checkout masteritu penting bahwa Anda TIDAK git stash pop, karena Anda akan membutuhkan simpanan ini nanti. Jika Anda pop simpanan dibuat dalam my_branchdan kemudian melakukan git stashdi master, Anda akan menyebabkan konflik merge perlu ketika Anda nantinya menerapkan simpanan yang di my_branch.
git resetunstages semua yang dihasilkan dari git stash apply. Misalnya, file yang telah dimodifikasi di simpanan tetapi tidak ada di masterdipentaskan sebagai konflik "dihapus oleh kami".
git checkout .dan git clean -f -dbuang semua yang tidak dilakukan: semua perubahan pada file yang dilacak, dan semua file dan direktori yang tidak dilacak. Mereka sudah disimpan di simpanan dan jika dibiarkan masterakan menyebabkan konflik penggabungan yang tidak perlu saat beralih kembali ke my_branch.
Yang terakhir git stash popakan didasarkan pada yang asli my_branch, dan karenanya tidak akan menyebabkan konflik penggabungan. Namun, jika simpanan Anda berisi file-file yang tidak terlacak yang telah Anda komit untuk dikuasai, git akan mengeluh bahwa itu "Tidak dapat mengembalikan file-file yang tidak dilacak dari simpanan". Untuk menyelesaikan konflik ini, menghapus file-file dari pohon Anda bekerja, maka git stash pop, git add ., dan git reset.