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_branch
yang 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 master
ke cabang Anda, karena bagaimanapun Anda harus melakukan itu pada akhirnya, dan sekarang adalah waktu terbaik untuk menyelesaikan konflik apa pun.
The -u
pilihan (alias --include-untracked
) di git stash -u
mencegah Anda dari kehilangan file yang tidak terlacak saat nanti lakukan git clean -f -d
dalam master
.
Setelah git checkout master
itu penting bahwa Anda TIDAK git stash pop
, karena Anda akan membutuhkan simpanan ini nanti. Jika Anda pop simpanan dibuat dalam my_branch
dan kemudian melakukan git stash
di master
, Anda akan menyebabkan konflik merge perlu ketika Anda nantinya menerapkan simpanan yang di my_branch
.
git reset
unstages semua yang dihasilkan dari git stash apply
. Misalnya, file yang telah dimodifikasi di simpanan tetapi tidak ada di master
dipentaskan sebagai konflik "dihapus oleh kami".
git checkout .
dan git clean -f -d
buang 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 master
akan menyebabkan konflik penggabungan yang tidak perlu saat beralih kembali ke my_branch
.
Yang terakhir git stash pop
akan 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
.